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

        

      

  • 相关阅读:
    在ASP.NET MVC中使用Redis
    学生管理系统(SSM简易版)总结
    springmvc缓存和mybatis缓存
    解决.NET Web API生成的Help无Controller说明&服务端接收不到请求
    ASP.NET MVC]WebAPI应用支持HTTPS的经验总结
    23 Flutter官方推荐的状态管理库provider的使用
    22 Flutter仿京东商城项目 inappbrowser 加载商品详情、保持页面状态、以及实现属性筛选业务逻辑
    21 Flutter仿京东商城项目 商品详情 请求接口渲染数据 商品属性数据渲染
    16Flutter中的路由 基本路由 基本路由跳转传值(上)
    20 Flutter仿京东商城项目 商品详情 底部弹出筛选属性 以及筛选属性页面布局
  • 原文地址:https://www.cnblogs.com/rana4504/p/14964259.html
Copyright © 2020-2023  润新知