新闻资讯

新闻资讯 行业动态

springboot实现热部署的三种方式(一)——Spring Loaded

编辑:008     时间:2020-03-09

Spring Loaded是一个用于在JVM运行时重新加载类文件更改的JVM代理,Spring Loaded允许你动态的新增、修改、删除某个方法、字段、构造方法,同样可以修改作用在类、方法、字段、构造方法上的注解,也可以新增、删除、改变枚举中的值。

Spring Loaded有两种实现方式,分别是Maven引入依赖方式和添加启动参数方式。

1、Maven引入依赖方式

<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>

如果你也是IDEA的话,直接界面上双击运行即可,如下

出现如下配置表是配置成功:

[INFO] Attaching agents: [C:\Users\tengj\.m2\repository\org\springframework\springloaded\1.2.6.RELEASE\springloaded-1.2.6.RELEASE.jar]

2、添加启动参数方式

这种方式是右键运行启动类
首先先下载对应的springloaded-1.2.6.RELEASE.jar,可以去上面提到的官网获取
博主这里直接引用maven依赖已经下载好的路径哈

然后打开下图所示的Edit Configurations配置,在VM options中输入:

-javaagent:C:\Users\tengj\.m2\repository\org\springframework\springloaded\1.2.6.RELEASE\springloaded-1.2.6.RELEASE.jar -noverify

然后直接右键运行启动类即可启动项目。

上面2种方式小伙伴随便选择一种即可,当系统通过 mvn spring-boot:run启动或者 右键application debug启动Java文件时, 系统会监视classes文件,当有classes文件被改动时,系统会重新加载类文件,不用重启服务。

idea中需要重新编译文件Ctrl+Shift+F9或者编译项目Ctrl+F9。

如何测试热部署是否可用呢,你可以先写个简单的Controller方法,返回个字符串,然后启动项目,接着修改下这个方法返回的字符串,Ctrl+Shift+F9编译下当前类,然后再刷新下页面看看是否内容改变了。

在 Spring Boot,模板引擎的页面默认是开启缓存,如果修改页面内容,刷新页面是无法获取修改后的页面内容,所以,如果我们不需要模板引擎的缓存,可以进行关闭。

spring.freemarker.cache=false spring.thymeleaf.cache=false spring.velocity.cache=false

经过博主简单的测试,发现大多数情况可以使用热部署,有效的解决了文章头部中提到的那个痛点,不过还是有一些情况下需要重新启动,不可用的情况如下:

(1)对于一些第三方的注解修改不能自动加载,比如spring mvc的@RequestMapping

(2)application.properties的修改也不行

(3)log4j的配置文件的修改不能即时生效


原文链接:https://my.oschina.net/u/4006148/blog/3173833

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐