集成 redisson 分两步,第一步引入pom,第二步需要配置
1引入pom
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.13.6</version>
</dependency>
2 自定义配置redisson地址
import lombok.Data;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.io.IOException;
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
@Data
public class MyRedissonConfig {
private String host;
private String port;
@Bean(destroyMethod = "shutdown")
RedissonClient redisson() throws IOException {
//1、创建配置
Config config = new Config();
config.useSingleServer()
.setAddress("redis://" + host + ":" + port);
return Redisson.create(config);
}
}
接下来就可以使用了,给出一个demo
@Autowired
RedissonClient redissonClient;
@Test
void treelUtil() {
RLock lock = redissonClient.getLock("124");
try {
System.out.println(lock);
lock.lock(30, TimeUnit.MILLISECONDS);
if (lock.isLocked()) {
System.out.println("获取到了");
} else {
System.out.println("未获取到");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (lock.isHeldByCurrentThread()) {
lock.unlock();
System.out.println("解锁成功");
}
}
}
}
ps: 集成过程中百度了很多文章,也有一些疑惑,请知道的大神予以解答 两个问题,但是是同样的
RedissonAutoConfiguration 中已经明确引入了 相关配置,附上一段此类的代码
@Configuration
@ConditionalOnClass({Redisson.class, RedisOperations.class})
@AutoConfigureBefore({RedisAutoConfiguration.class})
@EnableConfigurationProperties({RedissonProperties.class, RedisProperties.class})
public class RedissonAutoConfiguration {
private static final String REDIS_PROTOCOL_PREFIX = "redis://";
private static final String REDISS_PROTOCOL_PREFIX = "rediss://";
@Autowired(
required = false
)
其中引入了RedisProperties,正常来说,是无须编写redisson配置类的,但是不知为何,必须要有该配置类,否则注入redisson失败
此外RedissonProperties 中 一段代码
@ConfigurationProperties(
prefix = "spring.redis.redisson"
)
public class RedissonProperties {
private String config;
private String file;
public RedissonProperties() {
}
其中 spring.redis.redisson 按照此,我在yml中配置,也是不生效的,无法读取配置
image.png
怎么回事呢~~
本文转自 jimolvxing.blog.csdn.net/article/det…,如有侵权,请联系删除。