我要配置mybatis二級(jí)緩存為redis因?yàn)樾枰⑷雛edis的ipportusername等等我需要構(gòu)建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,所以如果這個(gè)類被加載時(shí)JedisPoolConfig,JedisConnectionFactory等bean還沒有初始化的話,就得到null,有沒有什么辦法讓JedisPoolConfig,JedisConnectionFactory等bean能保證在MybatisCache被使用期前初始化?
不被spring管理的類依賴于spring管理的bean,如何讓spring管理的bean及早初始化?
千萬里不及你
2019-05-20 10:38:51