自定义个一个简单的 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启动器成功!