自定义场景启动器:
大概步骤:
我们引入的spring-boot-starter-xxx都是封装好的场景启动器,一般来说,引入一个xxx-starter场景,就是引入一个项目,这个项目的pom依赖中有各种其他的依赖,比如该项目的自动装配依赖,所有我们需要再创建一个xxxAutoConfigure项目在这个xxxAutoConfigure项目中创建自动装配类,并进行资源绑定等等,最后在resources/META-INF/创建spring.factories文件整个自定义starter就准备好了,后期只需要引入xxx-starter项目。就能使得自动装配类自动为我们注册组件,从而可以使用组件的各个方法。
小例子
创建一个starter项目,作为整体的,供外部引用的场景依赖包。
在该项目的pom文件中引入依赖包含着自动配置类的项目GAV
创建项目为:keyi-info-spring-boot-starter创建一个自动配置项目,提供自动装配类,资源绑定,核心功能组件注册。
创建项目为:keyi-info-spring-boot-starter-autoconfigure创建资源配置文件:KeYiInfoProperties
@ConfigurationProperties("keyi") public class KeYiInfoProperties { private String name; private String age; private String email; private String tel; private String information; //省略getter,setter方法 }
创建核心功能组件,该对象要提供核心功能,KeYiInfo
public class KeYiInfo { @Autowired private KeYiInfoProperties keYiInfoProperties; public void getInfo(){ System.out.println("姓名:"+keYiInfoProperties.getName()); System.out.println("年龄:"+keYiInfoProperties.getAge()); System.out.println("邮箱:"+keYiInfoProperties.getEmail()); System.out.println("电话:"+keYiInfoProperties.getTel()); System.out.println("简介:"+keYiInfoProperties.getInformation()); } }
创建自动配置类,用来注册核心组件,KeYiInfoAutoConfigure
@Configuration @EnableConfigurationProperties(KeYiInfoProperties.class) public class KeYiInfoAutoConfigure { @Bean @ConditionalOnMissingBean(KeYiInfo.class) public KeYiInfo keYiInfo(){ return new KeYiInfo(); } }
在自动配置项目中的resources/META-INF下创建spring.factories文件,设置自动配置类为自动装配
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ world.keyi.auto.KeYiInfoAutoConfigure
完成自动配置类项目,记得在starter场景依赖项目中引入自动配置类项目的依赖
最后使用maven的build插件,将两个项目打包进本地仓库,当需要使用该starter场景时,
直接引入starter项目的GAV依赖,然后代码中即可使用自动配置类为我们注册的组件了@Autowired KeYiInfo keYiInfo; @Test public void starterTest(){ keYiInfo.getInfo(); }