Spring Boot 热部署

  |   0 评论   |   378 浏览

添加依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
  <!-- 防止使用项目将devtools传递性地应用于其他模块 -->
  <optional>true</optional>
</dependency>

然后就可以了,当修改Classpath下的文件时,就会自动重启。

  • 该工具会默认排除掉如下目录: /META-INF/resources、 /resources、 /static、 /public和
    /templates,而是触发live reload

  • 可以设置spring.devtools.restart.exclude属性来覆盖默认的重启排除目录;
    例如,只排除/static和/templates目录:spring.devtools.restart.exclude=/static/,/templates/

  • 更多的属性,请参考DevToolsPropertyDefaultsPostProcessor

关闭自动重启

设置 spring.devtools.restart.enabled 属性为false,可以关闭该特性。可以在application.properties中设置,也可以通过设置环境变量的方式。

public static void main(String[] args) {
    System.setProperty("spring.devtools.restart.enabled", "false");
    SpringApplication.run(MyApp.class, args);
}

LiveReload

DevTools内置了一个LiveReload服务,可以在资源变化时用来触发浏览器刷新。当然这个需要你浏览器安装了LiveReload插件,并且启动这个插件才行。很有意思,这里介绍下如何弄。

先去谷歌商店安装LiveReload插件,自己准备梯子。

安装好在要自动刷新的页面点击下图中图标,启动应用后更新页面内容或者css等都会触发页面自动刷新了。如下图,圈中的就是,点一下会变黑就是启动了。

最后展示效果,修改完html页面后,Ctrl+Shift+F9,没有重启,页面也会自动刷新了,太有趣了。

如果您不想在应用程序运行时启动LiveReload服务器,则可以将spring.devtools.livereload.enabled属性设置为false。

一次只能运行一个LiveReload服务器。开始应用程序之前,请确保没有其他LiveReload服务器正在运行。
如果你的IDE启动多个应用程序,则只有第一个应用程序将支持LiveReload。

注意事项

在debug启动时,项目启动结束时停到了如下位置:

public static void exitCurrentThread() {
    throw new SilentExitException();
}

不过倒不影响项目运行,自动启动也是可以的,在stackoverflow上找到的解决方案是:
Eclipse -> Preferences ->Java ->Debug
去掉"Suspend execution on uncaught exceptions"前面的勾;

参考资料:Breakpoint at “throw new SilentExitException()” in Eclipse + Spring Boot

网上还有博文说要在maven插件里加fork配置,然而我没加也好用,甚至把maven插件去掉了也没影响。

<build>
       <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
 <!--fork :  如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart -->
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
       </plugins>
   </build>
转载自:http://tengj.top/2017/06/01/springboot10/#spring-boot-devtools-实现热部署
       http://www.cnblogs.com/x113773/p/7058955.html

评论

发表评论

validate