热部署:就是在项目不停止的情况下,完成项目的部署。因为每次我们在修改完项目后,需要重新启动该项目,才可以看到修改后的内容。热部署就是在项目不重新启动的情况下,对项目进行部署,使我们可以看到修改后的内容。
测试项目
- pom
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
</properties>
<dependencies>
<!-- spring-boot启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加thymeleaf启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
- controller
@Controller
public class DemoController {
@RequestMapping("/show")
public String showPage() {
return "index";
}
}
- 页面,index.html
<body>
<span th:text="hello"></span>
</body>
- 启动类
@SpringBootApplication
public class App {
public static void main(String[] args) {
SpringApplication.run(App.class, args);
}
}
- 注意:这时如果修改controller代码或者页面代码,直接访问时不显示修改后的内容,需要重新启动该项目。
注意
如果想要使热部署生效,需要开启
Build Automotically
;
SpringLoader
方式一
配置maven插件进行使用。注意:要想使maven插件生效,必须使用maven命令,也就意味着项目的启动方法要发生改变。
- 在pom文件中添加插件:
<!-- springloader插件 -->
<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>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
使用maven命令启动项目:
spring-boot:run
;
在Run As
→maven build
→Goals
中输入命令,运行即可。
- 缺点:
①只能对后台java代码做部署处理,但是对页面无能为力;
②这种方式启动的程序是在系统后台以进程的形式来运行,意味着在eclipse中点击停止按钮,只是将该项目关闭,不是将进程关掉,再次启动会报端口抢占错误。这时需要在任务管理器中手动关掉这个进程java.exe
。
方式二:
在项目中直接加入springloader的jar包进行使用。
- 新建lib文件夹,将
springloaded-1.2.5.RELEASE.jar
包放入。 - 修改启动方式:
①在启动类中右击:
Run As
→Run Configurations
→选择Arguments
视图→VM arguments
添加参数:-javaagent:.\lib\springloaded-1.2.5.RELEASE.jar -noverify
→run
DevTools工具
springloader和DevTools区别:
1、 springloader在部署项目时使用的是热部署的方式;
2、DevTools在部署项目时采用重新部署的方式;
- 添加devtools坐标
<!-- devtools坐标 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
- 正常启动即可。
页面和后台代码都可以重新部署。