微服务应用开发入门②必用组件和必掌握知识点
概述源码地址 :https://github.com/zhouxiaohei/cloud-start-demo/tree/master/boot-swagger-demohttps://github.com/zhouxiaohei/cloud-start-demo/tree/master/boot-mybatisplus-demo环境准备 :1、maven3.x 2、JDK8 3、开发工具inte
准备
希望大家跟着源码实际操作一遍学习
项目Boot-swagger-demo
1、SpringBoot简介和基本知识
2、 Swagger助力对接和测试
3、SpringBoot缓存注解
相信很多人已经了解SpringBoot的概念,在这里不对赘述SpringBoot的概念,需要的可以查看早期博客SpringBoot简介
Spring常用web注解
get/post等请求 http://ip:port/api/v1?a=b
@requestParam 用于取url后面的键值对,name=a 对应的value是b
get/post等请求 http://ip:port/api/v1/demo http://ip:port/api/{v1}/demo
@PathVariable 取url路径上对应路径的值
@ModelAttribute
使用在get请求上类似@requestParam的效果
使用在post请求上是content-type = x-www-form-urlencoded,一种form表单
@requestBody
对应post请求是content-type application/json,用于传输json
@RestController 相比@Controller里面增加了@ResponseBody,即默认返回json格式,http的响应为json
@RequestMapping 用于设置controller层请求的路径
@getMapping @postMapping @deleteMapping等等
细分了请求方法类型是GET、POST等;不然也可以在@RequestMapping 参数设置请求类型
CommandLineRunner与PostConstruct
从Java EE5规范开始,Servlet增加了两个影响Servlet生命周期的注解(Annotation):@PostConstruct和@PreDestroy 而且这个方法不能有抛出异常声明。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的inti()方法。被@PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。被@PreDestroy 修饰的方法会在服务器卸载Servlet的时候运行,并且只会被服务器调用一次,类似于Servlet的destroy()方法。被@PreConstruct修饰的方法会在destroy()方法之后运行,在Servlet被彻底卸载之前。
之前运行@PostConstruct出现问题,发现在@PostConstruct修饰的方法结束之前,web应用无法正常执行,无法处理web请求。
Spring Boot应用程序在启动后,会遍历CommandLineRunner接口的实例并运行它们的run方法。也可以利用@Order注解(或者实现Order接口)来规定所有CommandLineRunner实例的运行顺序。不过实现CommandLineRunner不会影响其他web请求。
swagger配置和使用
之前写的SpringBoot集成swagger;可以参考
swaager可以生成一个可视化的API页面,可以很方便用来自测和联调测试;
启动以后大家很方便可以验证上面讲到的web开发常用注解、swagger的使用以及其他知识点。
多环境配置,随机数
SpringBoot帮我们提供类随机数、随机uuid等功能,格式如下
随机数 ${random.int} ${random.int[10,20]}
SpringBoot缓存
如图-②使用@EnableCache 注解,可以启用SpringBoot缓存
上图讲解 :boot-swagger-demo启动就可运行,可以看到简单的SpringBoot项目目录截图如图;
配置文件如图-①,启动类如图-②
可以在图-④配置swagger-ui测试上面讲到的常用web注解;
测试CommandLineRunner与PostConstruct
放开图-② 的testPostConstruct方法,然后运行代码,
会看到在@PostConstruct注解的方法成功加载的30秒里;无法访问项目的web接口;
注释图-②,放开图-③注释代码,启动应用,可以测试CommandLineRunner实现类加载的30秒内;
项目的web接口还可以正常访问;
多环境配置 : 一般我们会有dev(开发)、uat(测试)、prod(生产)三种配置文件;
我们可以设置spring.profiles.active: uat 加载指定的配置文件,加载对应的配置、
配置加载优先级
SpringBoot配置加载优先级 命令行 > 外部配置文件 > 内部配置文件
验证方式 外部配置文件
mvn clean install 生成可执行jar
在当前目录新建config目录,将yml复制一份到config目录;
修改config下yml文件端口,然后在命令行java -jar启动
验证方式 命令行
java -jar xx.jar --spring.port=10011
简单了解这三种即可,实际上包含大概9种优先级
java -jar boot-swagger-demo-1.0.0-SNAPSHOT.jar --server.port=11011
可以看到命令行指定启动端口为11011,而我们配置文件端口为11001;加载uat环境的配置文件
项目boot-mybatisplus-demo
1、 持久层框架mybatisPlus
2、校验框架hibernate-validate
3、异步注解@Async
持久化框架MybatisPlus
MybatisPlus官网地址https://mp.baomidou.com/; MybatisPlus是国人基于mybatis开发是持久层框架;
API好用到飞起;自动生成controller、service、dao、bean的代码;
就算不实用自动生成,Ctrl + C Ctrl +V也很快;墙里推荐,提高开发速度;
可以参考之前的写的博客SpringBoot整合MybatisPlus-去xml
校验框架hibernate-validate
Spring提供的校验框架,帮我们解脱哪些if else判断,使用注解的形式好用到飞起;
结合swagger + MybatisPlus 开发速度简直不要太快 ;
可以在controller层结合注解很方便时使用;具体详情参考博客,
很抱歉这个博客没有写,如果需要留言我推荐一篇与你;
异步注解@Async
使用方法
使用@EnableAsync开始Spring的异步使用
在方法名前面加上@Async即可使用,这样调用就会变成异步
修饰在方法上,如果需要返回结果,返回类型为future,通过future.isDone 方法判断结果返回与否
注意事项
异步方法和调用异步方法的方法不能再同一个类
不能在静态方法上使用
应用场景
异步场景情况;
多个操作并行执行;
当然对于初学者来说,还有很多知识点需要掌握;
但是先跟着这两个项目跑起来,可以很快熟悉相关知识,同时加速开发;
Swagger + mybatisPlus + hibernate-validate 应用开发利器!
更多推荐
所有评论(0)