• 自定义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

        

      

  • 相关阅读:
    类型参数化
    scala 集合类型
    scala 列表List
    统计HDFS 上字节数据统计
    用scala 实现top N 排名
    scala 基础笔记
    Java 设计模式之 装饰者模式
    通过java api 读取sql 中数据(查询)
    leetcode 34. Search for a Range
    canvas画简单电路图
  • 原文地址:https://www.cnblogs.com/rana4504/p/14964259.html
Copyright © 2020-2023  润新知