Spring Boot笔记(二)——定时任务、swagger2、模板引擎Thymeleaf
- 1、springboot整合Quarz定时任务
- 1.1、为什么使用定时任务?
- 1.2、如何使用定时任务
- 2、springboot整合swagger2
- 2.1、为什么使用swagger2
- 2.2、怎么使用swagger2
- 3、thymeleaf 模板引擎
- 3.1、为什么使用thymeleaf模板引擎
1、springboot整合Quarz定时任务
1.1、为什么使用定时任务?
比如: 使用支付,如果在指定的时间没有支付则取消订单。 阿里云OSS文件上传,上传图片【比如图书的图片,图书信息删除了,修改图书的图片时,原来的图片。大量的多余图片,都在oss中存放。】。 定时删除无效图片【服务器最闲的时候03左右】。
在线Cron表达式生成器 链接: https://cron.qqe2.com/
1.2、如何使用定时任务
先在pom.xml配置文件中引入依赖
<!--springboot整合Quartz 定时任务的依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
创建一个定时任务类
@Component
public class OrderQuarz {
@Scheduled(cron = "0/2 * * * * ? ")//定时码
public void orderCheck(){
System.out.println("两秒后自动输出.....");
}
}
在主启动类上开启定时任务的注解
@SpringBootApplication
@EnableScheduling //开启Quarz注解的驱动
public class SpringbootQuarzApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootQuarzApplication.class, args);
}
}
2、springboot整合swagger2
2.1、为什么使用swagger2
- 因为前后端分离,后端人员需要为前端提高一个接口文档。如果后端开发人员自己写接口文档,那么非常复杂。而swagger2就是一个实时在线的文档。
2.2、怎么使用swagger2
引入依赖
<!--引入swagger2依赖-->
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>swagger-spring-boot-starter</artifactId>
<version>1.9.1.RELEASE</version>
</dependency>
<!--好看的ui-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.9.6</version>
</dependency>
创建一个swagger2的配置类
@Configuration
public class SwaggerConfig {
//获取swagger2的实例对象Docket
@Bean
public Docket getDocket() {
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.groupName("QY129").apiInfo(apiInfo()).select() //设置哪些包下的类生产api接口文档
.apis(RequestHandlerSelectors.basePackage("com.aaa.controller")) //设置哪些请求路径生产接口文档
.paths(PathSelectors.any())
.build();
return docket;
}
开启swagger2的注解
@SpringBootApplication
@MapperScan(basePackages = {"com.aaa.dao"})//为dao包下的所有接口生产实现类
@EnableSwagger2//开启swagger2的注解 <-------
//@EnableScheduling//开启Quarz注解的驱动
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
api文档链接: http://你的IP地址:端口号/swagger-ui.html
界面优化版的api文档链接: http://你的IP地址:端口号/doc.html
Swagger中常见的注解:
swagger2使用说明:
@Api:用在类上,说明该类的作用
@ApiOperation:用在方法上,说明方法的作用
@ApiImplicitParams:用在方法上包含一组参数说明
@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
paramType:参数放在哪个地方
header-->请求参数的获取:@RequestHeader
query-->请求参数的获取:@RequestParam
path(用于restful接口)-->请求参数的获取:@PathVariable
body(不常用)
form(不常用)
name:参数名
dataType:参数类型
required:参数是否必须传
value:参数的意思
defaultValue:参数的默认值
@ApiModel:描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,
请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:描述一个model的属性
- 实体类(@ApiModelProperty注解:描述一个model的属性)
- controller层(@ApiOperation注释:用在方法上,说明方法的作用)api文档界面效果 这时我们加上api注解后,发现更新了很多说明、注释。
3、thymeleaf 模板引擎
3.1、为什么使用thymeleaf模板引擎
默认springboot内置的tomcat不支持jsp模板引擎。而且jsp模板引擎效率太低。 jsp–>servlet—>class—>解析。
引入依赖
<!--thymeleaf模板引擎-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
网页使用thymeleaf标签
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:fmt="">
<head>
<meta charset="UTF-8">
<title>员工信息页面</title>
</head>
<body>
<h1>员工信息表</h1>
<span th:text="${name}"></span>
<table width="600" border="1">
<tr>
<td>员工ID</td>
<td>员工姓名</td>
<td>性别</td>
<td>所属部门</td>
<td>日期</td>
</tr>
<tr th:each="emps : ${emps}">
<td th:text="${emps.emp_id}"></td>
<td th:text="${emps.emp_name}"></td>
<td th:text="${emps.gender=='M'?'男':'女'}"></td>
<td th:text="${emps.d_Id==1?'开发部':'测试部'}"></td>
//日期格式格式化
<td th:text="${#dates.format(emps.createdate,'yyyy-MM-dd HH:mm:ss')}"></td>
</tr>
</table>
</body>
</html>