目录
编写additional-spring-configuration-metadata.json
一.手写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();
}
}
结果