Spring boot starter

Spring boot四大特性之一: starter
  • starter即为启动依赖,在spring boot项目启动时候,就会加载不同插件的配置, 如引入spring-boot-starter-data-redis依赖时候就会加载redis相关的依赖bean.
  • 应用:用于制作spring boot插件
  • 原理: Spring boot自动配置
构建简单spring-boot-redis插件工具
  • 接下来以构建一个简单spring boot redis插件为例
    1. 新建一个maven项目
    2. 添加依赖
     <dependency>
      <groupId>org.redisson</groupId>
      <artifactId>redisson</artifactId>
      <version>3.15.6</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.4.8</version>
      <optional>true</optional>  <!--optional为true不会有依赖传递,即导入该项目依赖不会为引入spring-boot-stater依赖-->
    </dependency>
    
    1. 创建配置类和redis的参数配置类
    //参数配置类
    //通过该注解可以来申明参数配置类,在项目启动时application.properties中的配置可以通过 prefix .field的方式将值注入到该类中.
    //eg: redis.host=192.168.12.12
    @ConfigurationProperties(prefix = "redis")
    public class RedisPropertiesConfiguration {
        private String host="localhost";
        private int port=6379;
        private int timeout;
        private boolean isSSL;
       ....省略属性get,set方法
       } 
    
    	//配置类
     @ConditionalOnClass(Redisson.class)    //条件加载,当classpath中存在Redisson类时才会加载该配置
     @Configuration
     @EnableConfigurationProperties(RedisPropertiesConfiguration.class) //将RedisPropertiesConfiguration注册到IOC容器中
     public class RedisAutoConfiguration {
         @Bean
         RedissonClient redissonClient(RedisPropertiesConfiguration redisPropertiesConfiguration) {
             Config config = new Config();
             String prefix = "redis://";
             //redis有多种配置形式,如主从,哨兵,可针对不同的配置形式以不同的配置参数返回使用不同配置的RedissonClient
             config.useSingleServer()
                     .setAddress(prefix + redisPropertiesConfiguration.getHost() + ":" + redisPropertiesConfiguration.getPort())
                     .setTimeout(redisPropertiesConfiguration.getTimeout());
             return Redisson.create(config);
         }
     }
    
    1. 构建自动装配配置文件spring.factories
    • 这是一种约定, spring boot启动会自动扫描该文件中配置去加载插件配置(详情见AutoConfigurationImportSelector.class)
    • 文件位置:classpath: META-INF/spring.factories, 在idea中是/resources/META-INF/spring.factories
    • 内容
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
     com.oocl.configuration.RedisAutoConfiguration
    
    1. 配置提示.
    • 通过以上方式构建的插件通过在本地构建就可以在本地使用了,但是在application.properties并不会有该插件的配置属性类属性的提示信息,接下来就是添加配置属性提示信息的内容.
    • 依赖导入
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <version>2.4.8</version>
      <optional>true</optional>
    </dependency>
    
    • 编写提示配置文件:
    文件位置:classpath: META-INF/conditional-spring-configuration-metadata.json, 在idea中是/resources/META-INF/conditional-spring-configuration-metadata.json
    文件内容:
    {
      "properties": [
        {
          "name": "redis.host",
          "type": "java.lang.String",
          "description": "redis的服务器地址",
          "defaultValue": "localhost"
        },
        {
          "name": "redis.port",
          "type": "java.lang.Integer",
          "description": "redis端口",
          "defaultValue": 6379
        }
      ]
    }
    
    • 这样在application.properties配置文件就会有提示了.
使用插件工具
  • 以在本地使用为例
  • 通过maven构建项目,使得生成本地的依赖包,本地项目可导入依赖来使用该插件
  • 导入依赖后在application的配置中配置redis配置属性.
redis.host=localhost
redis.port=6379
  • 由于自动化配置,RedissonClient以被加载到IOC容器,通过依赖注入的方式,就可以使用RedissonClient了.

  • 源码地址: https://github.com/MrJDA/springBootRedisStarter/tree/master

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值