目录:
1、SpringBoot自定义starter组件简介;
2、SpringBoot自定义starter组件流程;
3、SpringBoot自定义starter组件效果展示;
——————————————————————————————————————————
1、SpringBoot自定义starter组件简介;
在实际开发中,得益于SpringBoot的约定优于配置 ( convention over configuration ),我们从繁琐的配置中抽身,全力以赴与代码做斗争,期间,即使业务场景变动,仍难免会遇到某些相似需求,需要书写一些常用功能代码,此时,为避免代码冗余,提高代码复用性,我们可以根据springboot的COC的特性,自己将这些功能代码封装后,打成jar包组件,将其放到maven仓库中,在使用到该功能的工程中导入该组件jar包依赖即可。
2、SpringBoot自定义starter组件流程;
该例基于某公益网站对捐赠者的简单正面反馈,小伙伴们可自行参考:
a.首先向大家介绍自建starter组件的项目结构,其中,feedback-spring-boot-starter-autoconfiguraion是我们项目的主体模块,内含业务代码,而feedback-spring-boot-starter它是一个空模块,只是在pom.xml中引入了feedback-spring-boot-starter-autoconfiguraion,也是我们以后引入的组件依赖artifactId。下面的主要展开介绍着feedback-spring-boot-starter-autoconfiguraion中的内容。
下图为feedback-spring-boot-starter的项目结构:
下图为feedback-spring-boot-starter的pom.xml配置:
下图为feedback-spring-boot-starter-autoconfiguraion 的pom.xml配置:
b.主配置类FeedbackConfigurationProperties的注解及含义:
@Configuration->该类为配置类;
@EnableConfigurationProperties(FeesbackPropertis.class)->将FeesbackPropertis存放到IOC容器中并读取其类注解,将其属性值与配置文件绑定;
@Bean->将FeedbsckService存放到IOC容器中;
@ConditionalOnMissingBean(FeedbsckService.class)判断IOC容器中是否存在FeedbsckService对象,若存在,不执行该方法, 反之若不存在则执行。
下图为主配置类FeedbackAutoConfiguration:
c.定义在service层的主体业务类,类中方法为实现业务功能,类中用@Autowired注解注入bean做成员变量,业务所需变量抽为bean的成员变量。
下图为主体业务逻辑类FeedbackService:
d.将主体业务代码所需的全部参数设置为一个javabean,放在pojo中,成员私有化、内置无参构造、get和set方法、toString方法(可以不加,我添加用来测试),其中类注解@ConfigurationProperties(prefix="feedback")含义是与主配置类FeedbackAutoConfiguration上注解@EnableConfigurationProperties(FeesbackPropertis.class)呼应,让其扫描到并且在配置文件application.yml中读取key前缀为feedback的配置内容为其属性赋值。
下图为类名为FeesbackPropertis的javabean:
下图为javabean成员变量赋初始值的application.yml:
e.至关重要的一步:至此,我们的组件主体算是写完了,接下来我们要考虑使用该组件的工程如何在springboot框架中将该组件导入ioc容器并配置,根据分析springboot初始加载自动配置类源码可知,只有将它放到resources/META-INF/spring.factories中,它才会在调用工程中启动初始化时被加载,并自动配置,因此,我们创建该文件夹,并参照springboot的该文件夹内容格式写入。
下图为resources/META-INF/spring.factories:
f.组件已配好将它打包放入到我们的maven而本地仓库。
下图为打包流程示意:
完成啦!!!!!!下面是测试环节!!!
3、SpringBoot自定义starter组件效果展示: