1. Spring Boot热部署 (一)
热部署:自动部署,当代码进行更改的时候不需要自己手动去重启项目
注意:1)当前方式热部署后只有修改返回值才能自动启动,当添加方法,类则不会
首先:在pom.xml文件中plugins标签中添加依赖包
<!-- 在这里添加springloaderplugin-->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.4.RELEASE</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
2.1第一种方式
使用maven 命令执行 :spring-boot:run
缺点:关闭服务的时候,后台服务不关闭,必须手动关闭
2.2第二种方式
使用run as – javaapplication执行
1) 添加spring-loader-1.2.4.RELEASE.jar架包到lib文件
2) 然后把IDEA的run参数里VM参数设置为:-javaagent:.\lib\springloaded-1.2.4.RELEASE.jar -noverify
3)
执行run as即可
2. springboot + devtools(热部署)(二)
2.1 介绍:
spring-boot-devtools 是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去。devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),因为其采用的虚拟机机制,该项重启是很快的
2.2 原理:
使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader ,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)
2.3 使用方法:
1) 在pom.xml标签中dependencys添加依赖包
<!-- spring boot devtools 依赖包. -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
2) 在pom.xml标签中plugins添加spring-boot-maven-plugin
<!-- 这是spring bootdevtool plugin -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork : 如果没有该项配置,肯呢个devtools不会起作用,即应用不会restart-->
<fork>true</fork>
</configuration>
</plugin>
3) 执行run as即可
4) 页面需要热部署需要配置:
在application.properties配置spring.thymeleaf.cache=false(这里注意不同的模板配置不一样)
5) 如果未能实现的原因:
1. eclipes的Build Automatically是否已经勾选(开启自动编译的功能)
2. SpringApplication.setRegisterShutdownHook(false)如果设置了,那么自动重启不起作用
3. 是否加入plugin以及属性<fork>true</fork>
4. 对应的spring-boot版本是否正确推荐1.4.1版本以上