IDEA新建一个Maven项目
pom.xml中加入spring-boot-devtools依赖
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <scope>true</scope> </dependency>
注意,还需要加入spring-boot-maven-plugin
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!--如果没有该配置,devtools不会起作用,即应用不会restart--> <fork>true</fork> </configuration> </plugin> </plugins> </build>
创建启动类和控制器类、页面
package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootDemoApplication { public static void main(String[] args) { SpringApplication.run(SpringBootDemoApplication.class, args); } }
package com.example.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @RequestMapping("hello") public class HelloController { @RequestMapping("index") public String index(Model model){ model.addAttribute("who","spring boot"); return "hello/index.html"; } }
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="utf-8"> <title>spring boot demo</title> </head> <body> <p th:text="${who}"></p> </body> </html>
页面热部署需要在application.yml中配置
spring:
thymeleaf:
cache: false
代码修改后不能热部署
原因:
Spring Boot Devtools会监控类路径目录,如果类路径下的文件发生了变化(比如重新编译),则Spring Boot Devtools会重新加载和重启Spring Boot应用。
而在Intellij中,默认不会自动编译(auto build),并且默认不会更新正在运行的应用。
这就导致了在Intellj中修改代码后,Spring Boot应用不会重新加载新的类文件。
方法:
手动触发构建,修改代码后,选择 Build / Build project (Win/Linux: CTRL
+ F9
, Mac: COMMAND
+ F9
)