发表于: 2021-05-12 23:16:56

1 1299


今天完成的事情:
Swagger学习
异步、定时任务学习

回顾了之前的架构



明天计划的事情:

spring cloud oAuth2和JWT保护微服务




遇到的问题:

暂无




收获:

Swagger是什么?



最流行的API框架

Restful Api 文档在线自动生成器 => API 文档 与API 定义同步更新


直接运行,在线测试API

支持多种语言 (如:Java,PHP等)



为什么要用Swagger,Swagger解决了什么问题?
这和现在前后端分离有关,前后端通过API进行交互,导致前端或者后端无法做到“及时协商,尽早解决”。

这个的解决方案就是:首先定义schema [ 计划的提纲 ],并实时跟踪最新的API,降低集成风险


Swagger可以自动更新Restful Api 文档,这就保证了前后端都能得到最新的API。但是接口文档一般都要在做任务之前就要订好,不然改个数据库,增加个值,后端工作量需要修改很多部分,前端也是。



1.导入依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>



2.编写配置类-SwaggerConfig

@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${swagger.show}")
private boolean swaggerShow;
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.enable(swaggerShow)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.kbk.controller"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title(" Swagger Restful API")
.description("test")
.contact("MEKBK")
.version("1.0")
.build();
}
}



运行成功:

=========
=========


异步、定时任务学习
异步:
@Async
@Component
public class AsyncService {
public void hello(){
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("业务进行中....");
}
}
@Autowired
AsyncService asyncService;
@GetMapping("/hello")
public String hello(){
asyncService.hello();
return "LoginSuccessful";
}
记得加上注解:

运行成功:


======
定时:
Spring为我们提供了异步执行任务调度的方式,提供了两个接口
TaskExecutor接口  任务执行
TaskScheduler接口   任务调度
两个注解:
@EnableScheduling   开启定时任务的注解
@Scheduled  什么时候执行
cron表达式:
字段
允许值
允许的特殊字符
秒(Seconds)
0~59的整数
, - * /    四个字符
分(Minutes
0~59的整数
, - * /    四个字符
小时(Hours
0~23的整数
, - * /    四个字符
日期(DayofMonth
1~31的整数(但是你需要考虑你月的天数)
,- * ? / L W C     八个字符
月份(Month
1~12的整数或者 JAN-DEC
, - * /    四个字符
星期(DayofWeek
1~7的整数或者 SUN-SAT (1=SUN)
, - * ? / L C #     八个字符
年(可选,留空)(Year
1970~2099
, - * /    四个字符
举例:

0 0 10,14,16 * * ? 每天上午10点,下午2点,4点
0 0/30 9-17 * * ? 朝九晚五工作时间内每半小时
0 0 12 ? * WED 表示每个星期三中午12点
"0 0 12 * * ?" 每天中午12点触发
"0 15 10 ? * *" 每天上午10:15触发
"0 15 10 * * ?" 每天上午10:15触发
"0 15 10 * * ? *" 每天上午10:15触发
"0 15 10 * * ? 2005" 2005年的每天上午10:15触发
"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发
"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 * ?" 每月15日上午10:15触发
"0 15 10 L * ?" 每月最后一日的上午10:15触发
"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发
"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发
编写代码
@Component
public class ScheduledService {
//秒 分 时 日 月 周几
//0 * * * * MON-FRI
//注意cron表达式的用法;
@Scheduled(cron = "0 42 10 * * 0-7")
public void hello(){
System.out.println("hello.....");
}
}
添加注解:

运行:

=============
又理了一下springMVC    到spring   再到  spring boot   最后到分布式





返回列表 返回列表
评论

    分享到