Administrator
发布于 2023-09-09 / 97 阅读 / 0 评论 / 0 点赞

手写一个springboot-start

手写一个springboot-start

我们今天演示如何手写一个简单的 Spring Boot Starter,这里就使用 Redisson 为例演示吧。

一、创建项目、添加依赖

因为是写 Redisson 的例子,需要引入 Redisson 和 Spring Boot 的依赖

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

        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.11.1</version>
        </dependency>

二、定义属性类

这里就定义了连接 Redis 的地址、端口、密码等信息:

@ConfigurationProperties(prefix = "gp.redisson")
public class RedissonProperties {

    private String host = "localhost";
    private String password;
    private int port = 6379;
    private int timeout;
    private boolean ssl;

    public String getHost() {
        return host;
    }

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

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getPort() {
        return port;
    }

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

    public int getTimeout() {
        return timeout;
    }

    public void setTimeout(int timeout) {
        this.timeout = timeout;
    }

    public boolean isSsl() {
        return ssl;
    }

    public void setSsl(boolean ssl) {
        this.ssl = ssl;
    }
}

三、定义配置类

配置类里面通过读取配置,实例化出来 RedissonClient 对象:

@Configuration
@ConditionalOnClass(Redisson.class)
@EnableConfigurationProperties(RedissonProperties.class)
public class RedissonAutoConfiguration {

    @Bean
    public RedissonClient redissonClient(RedissonProperties redissonProperties) {
        Config config = new Config();
        String prefix = "redis://";
        if (redissonProperties.isSsl()) {
            prefix = "rediss://";
        }

        SingleServerConfig singleServerConfig = config.useSingleServer()
                .setAddress(prefix + redissonProperties.getHost() + ":" + redissonProperties.getPort())
                .setConnectTimeout(redissonProperties.getTimeout());

        if (StringUtils.hasLength(redissonProperties.getPassword())) {
            singleServerConfig.setPassword(redissonProperties.getPassword());
        }

        return Redisson.create(config);
    }

}

四、创建资源文件

最后需要在 resources 目录下创建 META-INF/spring.factories 文件,指定 Spring Boot 扫描到我们创建的 RedissonAutoConfiguration 类,从而实例化 RedissonClient

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.jerry.redis.RedissonAutoConfiguration

五、如何使用

在其它项目中如果需要使用我们自定义的 Starter,只需要添加依赖:

        <dependency>
            <groupId>com.jerry</groupId>
            <artifactId>redis-spring-boot-starter</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

然后在配置文件中配置 Redis 的连接信息:

gp:
  redisson:
    host: localhost
    port: 6379

最后就可以愉快的使用 RedissonClient 对象了。


评论