spring bean 循环依赖问题解决

486 阅读1分钟

问题描述:The dependencies of some of the beans in the application context form a cycle:

***************************
APPLICATION FAILED TO START
***************************

Description:

The dependencies of some of the beans in the application context form a cycle:

   TDriverVoiceOperateClientImpl
      ↓
   saveVoiceOperateLogAction
      ↓
   voiceOperateLogService
      ↓
   voiceOperateLogMapper defined in URL [jar:file:/docker/opt/meituan/apps/qcs-driver-security-server/work/qcs-driver-security-server-1.0-SNAPSHOT.jar!/BOOT-INF/lib/qcs-driver-security-core-1.0-SNAPSHOT.jar!/com/sankuai/qcs/driver/security/mapper/VoiceOperateLogMapper.class]
┌─────┐
|  sqlSessionFactory defined in class path resource [com/sankuai/qcs/driver/security/app/MybatisConfig$RoutingDataSource.class]
↑     ↓
|  serverPublisher
↑     ↓
|  TDriverSecurityCommmonServiceImpl (field private com.sankuai.qcs.driver.security.service.LeftServiceTimeTaskService com.sankuai.qcs.driver.security.thrift.TDriverSecurityCommmonServiceImpl.leftServiceTimeTaskService)
↑     ↓
|  leftServiceTimeTaskService
↑     ↓
|  leftServiceTimeTaskMapper defined in URL [jar:file:/docker/opt/meituan/apps/qcs-driver-security-server/work/qcs-driver-security-server-1.0-SNAPSHOT.jar!/BOOT-INF/lib/qcs-driver-security-core-1.0-SNAPSHOT.jar!/com/sankuai/qcs/driver/security/mapper/LeftServiceTimeTaskMapper.class]
└─────┘

工具人好久没碰见这种破问题了,解决办法是把所有循环以来的类引用改成@Autowired注册,解决了。

顺便复习下@Autowired 和 @Resource的区别。