手写 redisson starer组件

目录

一.手写redisson starer组件

创建项目

编写RedissionAutoConfiguration

编写RedissionProperties

编写spring.factories文件

编写additional-spring-configuration-metadata.json

打包

二.加入Spring Boot项目测试


一.手写redisson starer组件

项目结构

redission-spring-boot-starter

创建项目

先加入spring boot和redisson的相关依赖

<!--    spring boot 依赖-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.6.3</version>
      <optional>true</optional>
    </dependency>

<!--    这个依赖 可以让程序根据配置文件注入值-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <version>2.4.3</version>
    </dependency>

<!--    redisson的依赖-->
    <dependency>
      <groupId>org.redisson</groupId>
      <artifactId>redisson</artifactId>
      <version>3.10.5</version>
    </dependency>
  </dependencies>

编写RedissionAutoConfiguration

配置类把RedissonClient注册成bean

@ConditionalOnClass(Redisson.class) //装配条件
@EnableConfigurationProperties(RedissionProperties.class) //
@Configuration
public class RedissionAutoConfiguration {

    @Bean
    RedissonClient redissonClient(RedissionProperties redissionProperties) {
        Config config = new Config();
        String prefix = "redis://";
        if (redissionProperties.isSsl()) {
            //加密
            prefix = "rediss://";
        }
        config.useSingleServer()
                .setAddress(prefix+redissionProperties.getHost()+":"+ redissionProperties.getPort())
                .setConnectTimeout(redissionProperties.getTimeOut())
                .setPassword(redissionProperties.getPassword());
        return Redisson.create(config);
    }
}

编写RedissionProperties

这样就可以根据Spring Boot的配置文件注入值

@ConfigurationProperties(prefix="ws.redission") //根据Springboot配置文件设值
public class RedissionProperties {
    //连接地址 默认localhost
    private String host = "localhost";

    //连接端口号 默认6379
    private int port = 6379;

    private String password;

    //超时时间 默认0
    private int timeOut = 0;

    //是否加密 默认不加密
    private boolean ssl = false;

    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;
    }

    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;
    }

    public String getPassword() {
        return password;
    }

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

编写spring.factories文件

以便我们的配置类可以被Spring Boot自动装配

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.ws.autoconfigure.RedissionAutoConfiguration

编写additional-spring-configuration-metadata.json

这样我们再写Spring Boot的配置文件时就会有我们的提示

{
  "properties": [
    {
      "name": "ws.redisson.host",
      "type": "java.lang.String",
      "description": "redis的服务器地址",
      "defaultValue": "localhost"
    },
    {
      "name": "ws.redisson.port",
      "type": "java.lang.Integer",
      "description": "redis的服务器的端口号",
      "defaultValue": 6379
    }
  ]
}

 就是这种提示,这跟前面接入的依赖也有关

打包

二.加入Spring Boot项目测试

1.加入redisson starer组件依赖

<!--        自定义的 redission starter组件-->
        <dependency>
            <groupId>com.ws</groupId>
            <artifactId>redission-spring-boot-starter</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

测试代码

@RestController
public class RedisContorller {

    @Autowired
    RedissonClient redissonClient;

    @GetMapping("/get")
    public String getName() {
        RBucket<String> bucket = redissonClient.getBucket("name");
        if (bucket.get() == null) {
            bucket.set("zs");
        }
        return bucket.get();
    }


}

结果

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w7486

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值