什么是spring的循环依赖问题?

简单说句。

今天报这个问题的时候我看了下我redis配置的写法:

@Configuration
public class RedisConfig {
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    /**
     * 去掉key前面的乱码
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplateInit(RedisConnectionFactory redisConnectionFactory) {
        //设置序列化Key的实例化对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}

这样写,效果就是装载配置类,spring会从容器里找RedisTemplate,但是此时RedisTemplate还没进入容器,而RedisTemplate进入容器又要求RedisConfig,就循环了。

正确写法如下:

@Configuration
public class RedisConfig {
//    @Autowired
//    private RedisTemplate<String, Object> redisTemplate;

    /**
     * 去掉key前面的乱码
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplateInit(RedisConnectionFactory redisConnectionFactory) {
        //设置序列化Key的实例化对象
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);

        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }
}

posted @ 2021-12-01 10:40  imissinstagram  Views(54)  Comments(0Edit  收藏  举报