SpringBoot 3.x版本自定义starter

SpringBoot3.x版本和2.x的自定义starter有一点不一样,特此写下这篇文章。记录一下。文章以流程为主,不过多解释原理。如果有不妥之处,还要麻烦大佬们多多指点。

通常我们在使用某些组件的时候,会导入一些依赖。依赖名为 xxx-xxx-starter。其中,xxx-spring-boot-starter的命名方式一般是第三方自定义的starter。spring-boot-xxx-starter则是springboot官方提供的依赖。

通常自定义starter,我们需要自定义两个模块。starter模块和autoconfiguration模块。

1.自定义starter模块如下:

在这里插入图片描述
在pom文件里面需要引入autoconfiguration模块。
文件依赖如下:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>

    <dependency>
        <groupId>com.beafory</groupId>
        <artifactId>redis-spring-boot-autoconfigure</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>

</dependencies>
2.在redis-spring-boot-autoconfigure里面则需要编写相关的加载信息。

//第一步,编写AutoConfiguration类

@Configuration
@EnableConfigurationProperties(RedisProperties.class)
@ConditionalOnClass(Jedis.class)
public class RedisAutoConfiguration {

    /***
    * @description 提供Jedis的bean
    * @return Jedis
    */

    @Bean
    @ConditionalOnMissingBean(name = "jedis")
    public Jedis jedis(RedisProperties redisProperties){
        System.out.println("RedisAutoConfiguration......");
        //使用有参构造,如果
        return new Jedis(redisProperties.getHost(),redisProperties.getPort());
    }


}

@Configuration。配置类
@ConditionalOnClass(Jedis.class)。当存在Jedis.Class的字节码文件时。
@EnableConfigurationProperties(RedisProperties.class)。将相关配置文件的属性导入
@ConditionalOnMissingBean(name = “jedis”),当不存在名为jedis的bean时,才创建

//第二步,创建类和配置文件绑定
@Component
@ConfigurationProperties(prefix = "redis")
public class RedisProperties {

    private String host = "localhost";
    private int port = 6379;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }
}

@ConfigurationProperties(prefix = “redis”)用于将JavaBean和配置文件绑定,指定属性名前缀是redis。我们如果想在配置文件里面配置可以这么写:redis.host = localhost 或 redis.port = 6379

3.Springboot3.x和2.x不一样的地方。

Springboot3.x的文件路径有所改动。如下:

 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

在resource下创建上述文件,直接将自动装配类的路径写入即可。有多个的话,一行写一个。
文件内容如下:

com.beafory.redis.config.RedisAutoConfiguration
4.在其他模块导入starter模块即可使用
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值