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

我要配置mybatis二级缓存为redis因为需要注入redis的ipportusername等等我需要构建JedisPoolConfig的bean,然后得到JedisConnectionFactory的bean而我定义的redis缓存如下
finalclassMybatisCacheimplementsCache{
privateStringid
privatefinalReadWriteLockreadWriteLock=newDummyReadWriteLock()
privateRedisTemplateredisTemplate
privateHashOperationshashOperations
privatestaticJedisConnectionFactoryjedisConnectionFactory
staticsetJedisConnectionFactory(JedisConnectionFactoryfactory){
jedisConnectionFactory=factory
}
MybatisCache(Stringid){
if(id==null){
thrownewIllegalArgumentException("CacheinstancesrequireanID")
}else{
this.id=id
redisTemplate=newRedisTemplate()
redisTemplate.setConnectionFactory(jedisConnectionFactory)
redisTemplate.setKeySerializer(newStringRedisSerializer())
redisTemplate.setValueSerializer(newGenericJackson2JsonRedisSerializer())
redisTemplate.setHashKeySerializer(newGenericJackson2JsonRedisSerializer())
redisTemplate.setHashValueSerializer(newGenericJackson2JsonRedisSerializer())
redisTemplate.afterPropertiesSet()
hashOperations=redisTemplate.opsForHash()
}
。。。
}
但是MybatisCache不是spring的bean,所以如果这个类被加载时JedisPoolConfig,JedisConnectionFactory等bean还没有初始化的话,就得到null,有没有什么办法让JedisPoolConfig,JedisConnectionFactory等bean能保证在MybatisCache被使用期前初始化?
开满天机
浏览 349回答 2
2回答

陪伴而非守候

1、要么把你所谓的那些不被spring管理的类依赖于spring管理的bean,配置为Spring管理的Bean,这样你就可以用Spring的IOC注入了,这种方式更简单,理论上任何Bean,都可以被Spring管理。2、如果你不想让Spring管理,那你在你代码里面,先把Spring初始化,这个应该好办的,初始化完成后,代码里可以监听Spring初始化完成的事件的,得到以后,你拿到Spring工厂,自己做IOC,做自己的类的初始化。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript