自定义springboot starter

一、什么是springboot starter

  自己写一个jar包,读取application.yml(application.properties)文件的配置节点到对象里面,springboot在启动的时候,会执行jar包,并把对象交给spring。我们在使用对象的时候,引入jar包,直接用@autowired引入注解即可。

  关于命名规则,spring官方的命名规则为:spring-boot-starter-XXX,建议自定义starter的命名为:组织标识-spring-boot-starter-XXX。

二、springboot starter的配置方式

  1、在resources下新建META-INF文件夹,新建文件名称为:spring.factories,里面写入我们要自动配置的类的全路径。

  2、注解方式。

三、spring.factories方式实现

  1、新建maven项目。

  2、把pom文件的packaging改为jar

  3、引入依赖,

 1  <!--主要是为编译器配置的 可以根据properties 鼠标右键 点到用这个属性的类上个-->
 2         <dependency>
 3             <groupId>org.springframework.boot</groupId>
 4             <artifactId>spring-boot-configuration-processor</artifactId>
 5             <optional>true</optional>
 6         </dependency>
 7         <!--主要是为了自动装配-->
 8         <dependency>
 9             <groupId>org.springframework.boot</groupId>
10             <artifactId>spring-boot-autoconfigure</artifactId>
11         </dependency>
View Code

  4、编写配置类

1 public class UserInfo {
2     private String userName;
3     private Integer age;
4     private String addr;
5 
6      //get set 省略      
7 }
View Code

  5、编写读取配置文件的类

1 @ConfigurationProperties(prefix = "user")
2 public class AutoConfigurationProperties {
3     private String userName;
4     private Integer age;
5     private String addr;
6 
7     //get set省略
8 }
View Code

  6、编写资源类,把读取的配置节点赋给配置类

 1 @Configuration
 2 @EnableConfigurationProperties(AutoConfigurationProperties.class)
 3 @ConditionalOnClass(UserInfo.class)
 4 public class MyAutoConfigurationClass {
 5 
 6     @Autowired
 7     private AutoConfigurationProperties autoConfigurationProperties;
 8 
 9     @ConditionalOnMissingBean
10     @Bean
11     public UserInfo getUserInfo(){
12         UserInfo userInfo = new UserInfo();
13         userInfo.setUserName(autoConfigurationProperties.getUserName());
14         userInfo.setAge(autoConfigurationProperties.getAge());
15         userInfo.setAddr(autoConfigurationProperties.getAddr());
16         return userInfo;
17     }
18 
19 }
View Code

  7、在resources文件夹下新建META-INF文件夹,新建spring.factories文件,添加内容

1 org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.rana.MyAutoConfigurationClass
View Code

  8、执行maven install命令,打包到本地

四、测试

  1、新建测试项目。

  2、引入依赖。

1 <dependency>
2     <groupId>com.rana</groupId>
3     <artifactId>rana-spring-boot-starter</artifactId>
4     <version>1.0-SNAPSHOT</version>
5 </dependency>
View Code

  3、添加application.yml配置节点

1 user:
2   user-name: xxx
3   age: 18
4   addr: tongzhou beijing
View Code

  4、引用

1     @Autowired
2     private UserInfo userInfo;
3 
4     @RequestMapping("/getuserinfo")
5     public String getUserInfo(){
6         return userInfo.getUserName();
7     }
View Code

    

  

原文地址:https://www.cnblogs.com/rana4504/p/14964259.html