为什么配置类里不能用注入 StringRedisTemplate redisTemplate;
时间: 2023-02-06 18:43:41 浏览: 313
配置类(如@Configuration类)是用来配置Spring应用上下文的,也就是说它用来定义bean的。如果在配置类中使用注入(例如使用@Autowired注解注入redisTemplate),就意味着在这个配置类中需要使用到一个redisTemplate bean,但是这个bean又是由这个配置类来定义的,这就造成了循环依赖,无法解决。
为了避免这种情况,通常在配置类中不使用注入,而是使用其他方法来创建和配置bean,例如使用@Bean注解或者使用Java Config的方式。
例如,你可以使用如下的方式在配置类中创建并配置redisTemplate bean:
```
@Configuration
public class RedisConfig {
@Bean
public StringRedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(connectionFactory);
return template;
}
}
```
然后,在其他的类中,你就可以使用注入的方式来使用这个redisTemplate bean了:
```
@Component
public class MyService {
@Autowired
private StringRedisTemplate redisTemplate;
// ...
}
```
阅读全文