最近在搞springboot+maven项目,每次重启很烦人,才想起以前的热部署devtool依赖没添加。
在搭建springboot项目中往controller类加入注解@RestController + @RequestMapping后,我们就可以通过http请求访问结果,可当我修改代码或增加文件后,我想要通过http请求访问最新结果就需要一遍又一遍地在IDEA中重新启动项目,这样才能看到每次操作数据库表后的最新内容;而用devtool依赖就可以实现maven的热部署即不需要再重启项目了。
接着讲解devtools依赖的使用:在你创建的项目的pom文件中加入下面的代码,即增加热部署devtools依赖,增加完成后IDEA会自动下载相应的jar包,之后就可以愉快的使用了,不用繁琐的一次又一次的启动项目,只要每次操作数据库表后刷新访问地址即可看到最新的内容,提升了工作效率也节约了宝贵的时间。
<!--在pom.xml中加入devtool依赖-->
<!--devtools可以实现页面热部署(即页面修改后会立即生效,这个也可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现)-->
<!--实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。
即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖myboot项目的项目如果想要使用devtools,需要重新引入 -->
<optional>true</optional>
</dependency>
注: 有人说还要增加true 才能正常使用devtools依赖,但是我没有加这个也能正常使用,所以万一只加devtools依赖不起作用,不妨在pom.xml一试,代码如下。
<!-- 用于将应用打成可直接运行的jar(该jar就是用于生产环境中的jar) 值得注意的是,如果没有引用spring-boot-starter-parent做parent, 且采用了上述的第二种方式,这里也要做出相应的改动 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<!-- 网上说如果没有该项配置,devtools不会起作用,即应用不会restart,但我没添加仍有效 -->
</configuration>
</plugin>
</plugins>
</build>
然后在IDEA中依次点击File-Settings-Build,Execution,Deployment-Complier,在右边界面找到下图并勾选Build project automatically
并打勾;下一步按住这几个键Ctrl+Shift+Alt+/,选中Registry ,在弹出的提示框中找到compiler.automake.allow.when.app.running如下图所示并打钩,就可以顺利使用了。