Spring Boot使用devtools进行热部署

使用springloaded进行热部署,但是新增变量、方法等...并不会进行热部署。

使用devtools则能解决这些问题,包括新增/删除方法,添加新的类,修改配置文件等一系列操作均能进行热部署。

什么是devtools

  • spring-boot-devtools:是一个为开发者服务的一个模块,最重要的功能就是自动将应用代码更新到最新的App上去。原理是检测到代码有更改之后,会重新启动服务,但是速度比手动操作更快,这里的更快并不是指手工操作时间。
  • 其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)。

修改pom.xml文件

  • 添加spring-boot-devtools 依赖包
<!-- 添加devtools依赖包 -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-devtools</artifactId>
	<optional>true</optional>
	<scope>true</scope>
</dependency>
  • 添加spring-boot-devtools plugin
<!-- 构建节点 -->
<build>
	<plugins>
		<!-- 添加spring-boot-devtools plugin -->
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
			<configuration>
				<fork>true</fork>
			</configuration>
		</plugin>
	</plugins>
</build>

配置好之后启动服务,可以测试新增/修改/删除方法或者修改配置文件和新增类进行测试,然后使用页面进行访问验证,每一次保存都会自动重启服务。

  • spring-boot-devtools会监听classpath下的文件变动,保存之后会立即重启应用,因为采用的虚拟机机制,该项重启是非常快的。
  • spring-boot-devtools可以实现页面热部署,页面修改后立即生效,可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现(不同的模板配置不一样)。

猜你喜欢

转载自my.oschina.net/u/3826645/blog/1822024