微服务应用开发入门②必用组件和必掌握知识点

 

准备

 
环境准备 : 1、maven3.x    2、JDK8   3、开发工具intellij idea   4、lombok插件
 
学习目标: SpirngBoot开发基础知识、web应用开发必备组件 Swagger + mybatisPlus +  hibernate-validate
 

希望大家跟着源码实际操作一遍学习

 
 

项目Boot-swagger-demo

 
通过项目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 参数设置请求类型

CommandLineRunnerPostConstruct

从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

  通过项目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 应用开发利器!

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章