一、什么是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>
4、编写配置类
1 public class UserInfo { 2 private String userName; 3 private Integer age; 4 private String addr; 5 6 //get set 省略 7 }
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 }
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 }
7、在resources文件夹下新建META-INF文件夹,新建spring.factories文件,添加内容
1 org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.rana.MyAutoConfigurationClass
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>
3、添加application.yml配置节点
1 user: 2 user-name: xxx 3 age: 18 4 addr: tongzhou beijing
4、引用
1 @Autowired 2 private UserInfo userInfo; 3 4 @RequestMapping("/getuserinfo") 5 public String getUserInfo(){ 6 return userInfo.getUserName(); 7 }