您好,匿名用户

不被spring管理的类依赖于spring管理的bean,如何让spring管理的bean及早初始化?

0 投票

我要配置mybatis二级缓存为redis
因为需要注入redis的ip port username等等
我需要构建JedisPoolConfig的bean,然后得到JedisConnectionFactory的bean
而我定义的redis缓存如下

final class MybatisCache implements Cache {
private String id
private final ReadWriteLock readWriteLock = new DummyReadWriteLock()
private RedisTemplate<String, Object> redisTemplate
private HashOperations<String, Object, Object> hashOperations
private static JedisConnectionFactory jedisConnectionFactory

static setJedisConnectionFactory(JedisConnectionFactory factory){
    jedisConnectionFactory = factory
}

MybatisCache(String id) {
    if (id == null) {
        throw new IllegalArgumentException("Cache instances require an ID")
    } else {
        this.id = id
        redisTemplate = new RedisTemplate()
        redisTemplate.setConnectionFactory(jedisConnectionFactory)
        redisTemplate.setKeySerializer(new StringRedisSerializer())
        redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer())
        redisTemplate.setHashKeySerializer(new GenericJackson2JsonRedisSerializer())
        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer())
        redisTemplate.afterPropertiesSet()
        hashOperations = redisTemplate.opsForHash()
    }
        。。。
}

但是MybatisCache不是spring的bean,所以如果这个类被加载时JedisPoolConfig,JedisConnectionFactory等bean还没有初始化的话,就得到null,有没有什么办法让JedisPoolConfig,JedisConnectionFactory等bean能保证在MybatisCache被使用期前初始化?

用户头像 提问 2019年 5月4日 @ Lux 中士 (1,397 威望)
分享到:

1个回答

0 投票
 
最佳答案

你可以注解MybatisCache成为spring的bean,如果你有其他理由不这样做的话,也可以在MybatisCache的构造方法中调用spring创建JedisPoolConfig,JedisConnectionFactory的实例。

用户头像 回复 2019年 5月4日 @ Malzahar 中士 (1,370 威望)
选中 2019年 5月3日 @Lux
提一个问题:

相关问题

0 投票
1 回复 21 阅读
0 投票
0 回复 53 阅读
0 投票
1 回复 116 阅读
用户头像 提问 2017年 5月7日 @ Karthus 中士 (1,242 威望)
0 投票
1 回复 213 阅读
0 投票
1 回复 150 阅读
用户头像 提问 2017年 5月3日 @ Rumble 上士 (1,549 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

IT技术交流群 - 随意问
欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...