手写 starter

自定义个一个简单的 redission-spring-boot-starter

第一步:新创建一个module,命名 redission-spring-boot-starter

目录结构:

请添加图片描述

第二步:导入依赖

<dependencies>
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.15.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <version>2.6.0</version>
            <optional>true</optional>
        </dependency>
        
        <!--导入这个依赖,方便配置redis属性时自动提示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <version>2.5.6</version>
            <optional>true</optional>
        </dependency>

    </dependencies>

第三步:自定义配置类

package com.ditian.redisson.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Classname RedissAutoConfiguration
 * @Description TODO
 * @Version 1.0.0
 * @Date 2021/11/23 13:58
 * @Created by DiTian
 */
@Configuration
@EnableConfigurationProperties(RedissonProperties.class)
public class RedissonAutoConfiguration {

    @Bean
    public RedissonClient redissonClient(RedissonProperties redissonProperties){
        Config config = new Config();
        String prefix = "redis://";
        if (redissonProperties.isSsl()){
            prefix = "rediss://";
        }
        config.useSingleServer().setAddress(prefix+redissonProperties.getHost()+":"+redissonProperties.getPort())
                .setTimeout(redissonProperties.getTimeout());
        return Redisson.create(config);
    }
}

package com.ditian.redisson.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * @Classname RedissonProperties
 * @Description 封装配置属性为一个对象,方便配置
 * @Version 1.0.0
 * @Date 2021/11/23 14:02
 * @Created by DiTian
 */
@ConfigurationProperties(prefix = "ditian.redisson")
public class RedissonProperties {
    private String host = "localhost";
    private int port = 6379;
    private int timeout = 1000;
    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;
    }
}

第四步:写入到 spring.factories 文件中,可被自动装配扫描到

创建 resources --》META-INF --》spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.ditian.redisson.config.RedissonAutoConfiguration

为了实现配置时有提示,同级目录创建文件:additional-spring-configuration-metadata.json

{
  "properties": [
    {
      "name": "ditian.redisson.host",
      "type": "java.lang.String",
      "description": "Redis服务器地址",
      "defaultValue": "localhost"
    },{
      "name": "ditian.redisson.port",
      "type": "java.lang.Integer",
      "description": "端口号",
      "defaultValue": 6379
    },{
      "name": "ditian.redisson.timeout",
      "type": "java.lang.Integer",
      "description": "请求超时时间",
      "defaultValue": 1000
    },{
      "name": "ditian.redisson.ssl",
      "type": "java.lang.Boolean",
      "description": "Redis服务器地址",
      "defaultValue": false
    }
  ]
}

第五步:mvn install命令把module添加到本地仓库

第六步:测试 redission-spring-boot-starter 启动器

新建一个project ,导入依赖

		<dependency>
			<groupId>com.ditian</groupId>
			<artifactId>redission-spring-boot-starter</artifactId>
			<version>1.0-SNAPSHOT</version>
		</dependency>

请添加图片描述

在 application.properties 中配置相关属性

ditian.redisson.host=118.195.165.130
ditian.redisson.port=6379
ditian.redisson.timeout=5000
ditian.redisson.ssl=false

发送请求测试结果:

@RestController
public class RedisController {

    @Autowired
    private RedissonClient redissonClient;
    @GetMapping("/count")
    public String getCount(){
        return "count:"+redissonClient.getKeys().count();
    }
}

自定义starter启动器成功!
请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值