SpringBoot注解循环依赖
SpringBoot注解循环依赖
今天在进⾏redis链接池配置代码时,运⾏测试时发现了⼀个循环依赖问题,在此记录下
问题所在
由于我在同⼀个类中对redis链接池进⾏配置,使⽤@Bean将返回的链接池对象(jedisPool)配置到IOC容器中,同时⼜使
⽤@Autowired将该IOC容器的对象(jedisPool)注⼊到依赖的成员变量中,导致了循环依赖错误。
@Service
public class RedisServiceCyclicDependence {
@Autowired
RedisConfig redisConfig;
//导致循环依赖
@Autowired
JedisPool jedisPool;
@Bean
public JedisPool JedisPoolFactory(){
JedisPoolConfig poolConfig =new JedisPoolConfig();
poolConfig.PoolMaxIdle());
poolConfig.PoolMaxTotal());
poolConfig.PoolMaxWait()*1000);
JedisPool jp =new JedisPool(poolConfig, Host(), Port(),
return jp;
}
}
解决⽅法
将配置JedisPool对象的类独⽴出来,不要在同⼀个类块中使⽤@Bean和@Autowried注解同⼀个对象,分为两个类进⾏配置,防⽌循环依赖。
@Service
public class RedisPoolFactory {
@Autowired
RedisConfig redisConfig;
@Bean
public JedisPool JedisPoolFactory(){
JedisPoolConfig poolConfig =new JedisPoolConfig();
poolConfig.PoolMaxIdle());
poolConfig.PoolMaxTotal());
poolConfig.PoolMaxWait()*1000);
JedisPool jp =new JedisPool(poolConfig, Host(), Port(),
return jp;
}
}
@Service
public class RedisService {
@Autowired
JedisPool jedisPool;
//在使⽤jedisPool获取Jedis对象进⾏操作
spring ioc注解
}
总结:在进⾏注解操作的时候,不要随便使⽤注解,防⽌循环依赖出现

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。