一、使用devtools工具包,每次修改后会整个项目重新加载
1 pom.xml文件
注:热部署功能spring-boot-1.3开始有的
<!--添加依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->
<optional>true</optional>
</dependency>
注:project 中添加 spring-boot-maven-plugin,主要在eclipse中使用,idea中不需要添加此配置。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
2 更改idea配置
1) “File” -> “Settings” -> “Build,Execution,Deplyment” -> “Compiler”,选中打勾 “Build project automatically” 。
2) 组合键:“Shift+Ctrl+Alt+/” ,选择 “Registry” ,选中打勾 “compiler.automake.allow.when.app.running” 。
3 Chrome禁用缓存
F12或者“Ctrl+Shift+I”,打开开发者工具,“Network” 选项卡下 选中打勾 “Disable Cache(while DevTools is open)”
二、使用springloaded配置pom.xml文件,使用mvn spring-boot:run启动
注:需要在spring-boot-maven-plugin中添加dependency,且确保每次修改实时生效,修改后需要build project(ctrl+F9)
<!-- 热部署方案二 -->
<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.6.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
三、使用springloaded本地加载启动,配置jvm参数
注:先下载springloaded工具包存放到指定目录(获取方法:http://repo.spring.io/release/org/springframework/springloaded/或者使用mvn下载),启动项目时,在jvm参数中配置javaagent:-javaagent:E:\project\learn\springloaded-1.2.5.RELEASE.jar -noverify(本地jar包地址) -noverify。
参数说明:-javaagent:指的是在执行main方法之前执行特定代码; -noverify 关闭java字节码校验功能
-
总结:热部署设置后最好重启下IDE。开发测试环境下使用第一种方式;在生产环境下,建议第三种,使用脚本启动
devtools和springloaded都是spring官网为了spring项目所推出的jar包,加之springBoot框架内嵌服务器的优势,使得改动后的项目部署变得非常简单;细心地会发现真正实现热部署的spingloaded,devtools只是实现了热启动而已,从控制台日志就可以看出来。