Spring Boot使用devtools进行热部署

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

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

 

什么是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>

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

 

  • spring-boot-devtools会监听classpath下的文件变更,保存以后会当即重启应用,由于采用的虚拟机机制,该项重启是很是快的。
  • spring-boot-devtools能够实现页面热部署,页面修改后当即生效,能够直接在application.properties文件中配置spring.thymeleaf.cache=false来实现(不一样的模板配置不同)。
相关文章
相关标签/搜索