《回顾》
上一篇,介绍了Springboot2的常用配置,集成freemarker开发页面及配置Springboot自带的日志。
在这里强调下,Springboot的日志同时配置「logging.path」和「logging.file」时,只有后者生效。
如果要配置路径,也要配置日志文件名,可以这样
「logging.file=/opt/logs/xxx/web.log」
本篇,将集成Thymeleaf、WebFlux
并且,构建Jar包脱离IDE独立运行。
它是什么?
Thymeleaf是用于Web和独立环境的现代服务器端Java模板引擎。
类似于Freemarker,但是它不像Freemarker那样,包含一些不符合HTML语意的标签。
因此Thymeleaf可以脱离Java环境,独立运行于浏览器,方便前后端独立调试。
1、引入Maven依赖,文件「pom.xml」
org.springframework.boot
spring-boot-starter-thymeleaf
2、配置Springboot支持,文件「application.properties」
# 文件路径
spring.thymeleaf.prefix=classpath:/templates/
# 编码
spring.thymeleaf.encoding=UTF-8
# 是否缓存
spring.thymeleaf.cache=false
# 后缀
spring.thymeleaf.suffix=.html
# 使用不严谨的html5,默认HTML5
spring.thymeleaf.mode=LEGACYHTML5
3、动手写代码
新建「IndexController.java」
新建「src/resources/templates/index.html」
结构和上一篇一致。
index.html
代码
SpringBoot演示
这是一个thymeleaf页面。
欢迎你 :
注意,需要引入Thymeleaf支持
Thymeleaf,内置于html标签中。
常用方法包含「th:if」、「th:text」、「th:value」、「th:src」等。基本是原HTML标签前面 +「th:」。
IndexController.java
代码和上篇一致,分为两个方法
1、不带参数请求首页
2、带参数请求首页
如下
@Controller
public class IndexController {
@GetMapping("/index")
public String index(){
return "index";
}
// 带参数访问首页
@GetMapping("/index/{name}")
public String index(ModelAndView modelAndView
, @PathVariable String name){
modelAndView.addObject("name",name);
return "index";
}
}
运行结果如下:
无参数访问首页
带参数访问首页
它是什么?
WebFlux是一个典型非阻塞异步的框架,它的核心是基于Reactor的相关API实现的,它不依赖于Servlet。
本章,简单介绍WebFlux使用及对比性能,后面将拿出一章,详细分析WebMVC和WebFlux的差别和WebFlux更深入用法。
1、Maven依赖
org.springframework.boot
spring-boot-starter-webflux
2、新增支持WebFlux方法。
@GetMapping("/webfulx_index")
public Mono webfulxIndex(){
return Mono.just("index");
}
注意它和WebMVC返回值的差异。
访问页面:
3、测试
3.1、WebMVC和WebFlux方法中,各增加一秒延迟。
如下:
3.2、模拟200用户,并发访问60秒。
JVM线程数对比结果(红色WebMVC、蓝色WebFlux):
请求吞吐量对比结果:
WebMVC
WebFlux
简单的测试,可得出结论,WebFlux可以使用更少的JVM线程,提供更高效的服务响应。
再次补充,Springboot系列接近尾声时,我将拿出一篇文章,专门对比分析WebMVC和WebFlux的差异。
开发完Springboot web应用以后,通常会以Jar包或War包的形式,运行于线上服务器。
本篇文章,先介绍以Jar包运行。
如何构建Jar包?
构建成功后将**.jar 文件,copy到任意位置
执行
java -jar **.jar
如下:
启动成功后,浏览器访问地址即可。
** 我的Java11没有配置环境变量,所以在执行java命令时要进入到Java存放目录,如果你已经配置过环境变量,可以直接使用java命令启动。
博客内所有文章,每周从公众号同步一次。
文章源码均可从公众号获取。
如果您可以关注下,那就好了。