图解Spring Boot热部署之devtools
什么是热部署
引用百度百科
热部署
所谓热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用。
对于Java应用程序来说,热部署就是在运行时更新Java类文件。在基于Java的应用服务器实现热部署的过程中,类装入器扮演着重要的角色。大多数基于Java的应用服务器,包括EJB服务器和Servlet容器,都支持热部署。类装入器不能重新装入一个已经装入的类,但只要使用一个新的类装入器实例,就可以将类再次装入一个正在运行的应用程序。
Tomcat的热部署
Tomcat的热部署(以后就不用重启了)
没有热部署和有热部署的开发效率是天差地别的。这个问题还受很多第三方软件包(Struts,Spring,Hibernate)的限制。本来可以热部署,加入了第三方的包就不可以了。所以,先说明详细的软件环境,和程序配置是非常必要的。
简单来说,热部署就是我们再修改代码的时候不需要重启toncat或者主方法,相信大家在以前写代码,每次做测试找bug都要进行大量的各种重启,浪费了很多时间与精力,使用热部署大大降低了开发成本,提高了开发速度,让我们更有精力的去做其他逻辑
1.引入pom
相关依赖
紧接着上个项目,在pom.xml
中添加以下依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
2.修改配置
1.File>settings>Build,Execution,Deployment>Compiler
下勾中Build Project automatically
点击apply
2.ctrl+alt+shift+/
点击Registry
找到compiler.automake.allow.when.app.running
勾选
注意:不要点击Restore Defaults 这个是恢复默认值的,勾选上就ok
3.修改controller
且不重新运行main
方法
package com.lkp.helloword.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/hello")
public class hello {
@RequestMapping("/index1")
public String index(){
return "helloword";
}
}
index后面加了个1,不去重启
main
方法我们再去测试不加1之前的看看能不能正常访问
现在我们访问的地址是不加1的,报错就说明我们的热部署生效了,我们没办法再去访问之前的路径,我们再去访问加了1的
可以看到从头到尾我们没有做任何重启相关的操作,只是加了依赖和配置了两处地方,我们任意修改它都是没有任何问题的,这样是不是大大简化了我们的开发呢,让我们更加关注的点是在业务逻辑而不是重启配置等
接下来会慢慢更新,尽可能的照顾零基础Spring Boot的朋友,这一系列博客是为了让没有SpringBoot基础的朋友快速入门谢谢!!