springboot系列四、配置模板引擎、配置热部署
一、配置模板引擎
在之前所见到的信息显示发现都是以 Rest 风格进行显示,但是很明显在实际的开发之中,所有数据的显示最终都应该交由页面完成,但是这个页面并不是*.jsp 页面,而是普通的*.html 页面,而且最为重要的是,此处所使用的渲染的页面采用的是模版方式 的显示,而在 Java 开发行业,对于前台的显示模版常见的一共有三类技术:FreeMarker、Velocity、beetle、jsp、thymeleaf(推荐使用),于是下 面就利用 thymeleaf 实现一个简单的模版渲染操作。
1、导入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
2、Model 传参
类似在 SpringMVC 的时代使用的是 ModelAndView 传递,SpringBoot 里面如果要传递直接在方法中定义一个 Model 参数即可。
@RequestMapping("/getUser") public String getUser(Model model) { model.addAttribute("userName","小明"); model.addAttribute("phone","123456"); return "user"; }
3、控制跳转
使用“@Controller”注解,时执行该控制器的方法后会进行跳转处理。如果现在要进行跳转页面的定义,有严格要求:在CLASSPATH路径下(src/main/resources、src/main/view)必须建立有一个templates的目录,在这个目 录里面保存有thymeleaf的所有相关页面,这些页面可以按照文件目录保存;resources下建立templates目前,创建user.html。
<!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>SpringBoot模版渲染</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/> </head> <body> <p th:text="${userName}"/> <p th:text="${phone}"/> </body> </html>
4、yml中配置html后缀
spring:
thymeleaf:
suffix: .html
5、验证
启动,访问:http://192.168.1.100:8082/springboot-demo/getUser
二、热部署配置
1、添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
说明:
(1) devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现),
实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。
即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的
(2)配置了后在修改java文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启),会清空session中的值,也就是如果有用户登陆的话,项目重启后需要重新登陆。
默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。
2、配置热启动和监听目录
devtools的配置
在application.properties中配置spring.devtools.restart.enabled=false,此时restart类加载器还会初始化,但不会监视文件更新。
在SprintApplication.run之前调用System.setProperty(“spring.devtools.restart.enabled”, “false”);可以完全关闭重启支持,配置内容:
#热部署生效 spring.devtools.restart.enabled: true #设置重启的目录 #spring.devtools.restart.additional-paths: src/main/java #classpath目录下的WEB-INF文件夹内容修改不重启 spring.devtools.restart.exclude: templates/**
3、IDEA配置自动编译
当我们修改了Java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译:
(1)File-Settings-Compiler-Build Project automatically
(2)ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running
4、测试
- 修改类–>保存:应用会重启
- 修改配置文件–>保存:应用会重启
- 修改页面–>保存:应用不会重启,但会重新加载,页面会刷新(原理是将spring.thymeleaf.cache设为false,参考:Spring Boot配置模板引擎)