模板引擎的热部署 在Spring Boot应用中,使用模板引擎的页面默认是开启缓存的,如果修改了页面内容,则刷新页面是得不到修改后的页面的效果。因此,我们可以在配置文件application.properties中关闭模板引擎的缓存。示例如下: 关闭Thymeleaf缓存的配置: spring.thymeleaf.cache=false 关闭FreeMarker缓存的配置: spring.freemarker.cache=false 关闭Groovy缓存的配置: spring.groovy.template.cache=false
使用spring-boot-devtools进行热部署 在Spring Boot应用的pom.xml文件中添加spring-boot-devtools依赖即可实现页面和代码的热部署。 spring-boot-devtools是一个为开发者服务的模块,最重要的功能就是自动实现将修改的应用代码更新到最新的应用上。其工作原理是使用两个ClassLoader,一个ClassLoader加载那些不会改变的类(如第三方JAR包);一个ClassLoader加载更新的类,称为Restart ClassLoader。这样在有代码修改时,原来的Restart ClassLoader被丢弃,重新创建一个Restart ClassLoader加载更新的类,由于只加载部分修改的类,所以实现了较快的重启。
使用spring-boot-devtools进行热部署。 1.创建Spring Boot Web应用 2.添加spring-boot-devtools依赖 3.创建控制器类 4.测试运行
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.devtools</groupId> <artifactId>SpringBootDevtools</artifactId> <version>0.0.1-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.0.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <properties> <!-- 声明项目配置依赖编码格式为 utf-8 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <fastjson.version>1.2.24</fastjson.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <!-- 添加MySQL依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> <version>8.0.13</version><!--$NO-MVN-MAN-VER$ --> </dependency> <!-- MyBatis-Spring,Spring Boot应用整合MyBatis框架的核心依赖配置 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
package com.ch.ch9_1; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestDevToolsController { @RequestMapping("/testDevTools") public String testDevTools() { return "test DevTools 222"; } }
package com.ch.ch9_1; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Ch91Application { public static void main(String[] args) { SpringApplication.run(Ch91Application.class, args); } }
spring.datasource.url=jdbc:mysql://localhost:3306/springbootjpa?serverTimezone=UTC&autoReconnect=true spring.datasource.username=root spring.datasource.password=admin spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.database=MYSQL spring.jpa.show-sql=true spring.jpa.hibernate.ddl-auto=update spring.jackson.serialization.indent-output=true
http://localhost:8080/testDevTools
修改代码,无需重启应用,直接刷新页面。