经过对springboot的学习认识到在springboot中有一个很重要的组件:Starter。
首先了解一下什么是SpringBoot的starter组件?这个可以理解为SpringBoot在集成一些指定框架时,除了预先读取的自动配置类之外,还需要通过其它代码来关联这些配置最终使得集成进来的框架可以工作,这些代码可以理解为一个个插件。
1.starter是一种服务(或者叫插件)——使得使用某个功能的开发者不需要关注各种依赖库的处理,不需要具体的配置信息,由Spring Boot自动通过classpath路径下的类发现需要的Bean,...
2.项目命名方式为[name]-spring-boot-starter (官方命名方式 spring-boot-...)
例如下面集成eureka注册中心和mybatis时需要引入对应的starter,通过XXXX-starter-XXXX插件依赖就能使得需要集成的框架生效并运行起来:
starter的理念:starter会把所有用到的依赖都给包含进来,避免了开发者自己去引入依赖所带来的麻烦。需要注意的是不同的starter是为了解决不同的依赖,所以它们内部的实现可能会有很大的差异,例如jpa的starter和Redis的starter可能实现就不一样,但是对外就是一个类似jar的依赖减少了重复性开发。
知道了starter的重要性,下面我们将手写一个日志打印自定义starter,这个starter的功能是使用AOP实现的一个日志打印功能,在正常请求方法以及发生异常时方法时触发AOP完成对模块名称,类名,方法名,请求参数,异常信息等的日志输出。
starter中使用AOP+自定义注解实现,目标是通过略微改造就可在实际springboot项目中直接在pom引入使用,同时以此介绍怎么完成一个自定义starter组件的开发。
在学习之前需先了解SpringBoot基础应用知识,SpringBoot自动配置原理知识以及SpringBoot监听器知识等,有助于理解代码设计思路。
(1)自定义Starter代码结构,实际上也是一个springboot的项目(以maven开发):