为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开满天机 2019-05-06 21:43:33
我要配置mybatis二级缓存为redis因为需要注入redis的ipportusername等等我需要构建JedisPoolConfig的bean,然后得到JedisConnectionFactory的bean而我定义的redis缓存如下finalclassMybatisCacheimplementsCache{privateStringidprivatefinalReadWriteLockreadWriteLock=newDummyReadWriteLock()privateRedisTemplateredisTemplateprivateHashOperationshashOperationsprivatestaticJedisConnectionFactoryjedisConnectionFactorystaticsetJedisConnectionFactory(JedisConnectionFactoryfactory){jedisConnectionFactory=factory}MybatisCache(Stringid){if(id==null){thrownewIllegalArgumentException("CacheinstancesrequireanID")}else{this.id=idredisTemplate=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被使用期前初始化?
查看完整描述

2 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

1、要么把你所谓的那些不被spring管理的类依赖于spring管理的bean,配置为Spring管理的Bean,这样你就可以用Spring的IOC注入了,这种方式更简单,理论上任何Bean,都可以被Spring管理。2、如果你不想让Spring管理,那你在你代码里面,先把Spring初始化,这个应该好办的,初始化完成后,代码里可以监听Spring初始化完成的事件的,得到以后,你拿到Spring工厂,自己做IOC,做自己的类的初始化。
                            
查看完整回答
反对 回复 2019-05-06
  • 2 回答
  • 0 关注
  • 348 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信