-
方式一:使用spring-boot-devtools
-
1、打开IDEA自动编译
-
2、添加spring-boot-devtools依赖
<!-- 热部署插件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <!--该项目的此依赖不会向下传递,如果其他项目使用到此项目作为依赖,需要使用此包,需要重新引入--> <optional>true</optional> </dependency>
-
3、在application.properties或者application.yml中添加如下配置:
application.properties
1.禁用重启
如果不想使用重启功能,可以使用spring.devtools.restart.enabled属性来禁用它。 在大多数情况下,你可以在application.properties中设置此项(这仍将初始化重启类加载器,但不会监视文件更改)。
#禁用重启
spring.devtools.restart.enabled=false
如果你需要完全禁用重启支持,因为它不适用于特定库,则需要在调用SpringApplication.run(…)之前设置System属性。
public static void main(String[] args) {
System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication.run(StoreApplication.class, args);
}
1.额外监控目录
当你对不在类路径中的文件进行更改时,可能需要重启或重新加载应用程序。为此,请使用spring.devtools.restart.additional-paths 属性来监控类路径之外的额外路径的更改。你可以使用 spring.devtools.restart.exclude 属性来控制额外路径下的更改是否会触发完全重启或只是实时重新加载 。
###################热部署##########################
#热部署额外监听的目录
spring.devtools.restart.additional-paths=src/main
3. 排除资源
某些资源在更改时不一定需要触发重启。 例如,可以直接编辑Thymeleaf模板。 springboot默认更改/META-INF/maven , /META-INF/resources , /resources , /static , /public或/templates中的资源不会触发重启,但会触发实时重新加载。 如果要自定义这些排除项,可以使用spring.devtools.restart.exclude属性。 例如,要仅排除/static和/public你将设置以下内容:
#热部署自定义排除的目录
spring.devtools.restart.exclude=static/**,public/**
如果想保留默认(情况下的)排除目录,并添加额外的排除目录,你可以使用spring.devtools.restart.additional-exclude 属性。
#xxx为额外排除的目录
spring.devtools.restart.additional-exclude=/xxx
-
方式二:spring loaded
这种方式是以Maven插件的形式去加载,所以启动时使用通过Maven命令mvn spring-boot:run
启动,而通过Application.run方式启动的会无效,因为通过应用程序启动时,已经绕开了Maven插件机制。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.5.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>