升级Spring Framework后提示 This is often the result of over-eager type matching – consider using ‘getBeanNamesForType’ with the ‘allowEagerInit’ flag turned off, for example
这实际上是循环依赖导致的问题。
有以下解决办法:
1)在注入A类上加@Lazy,保证A对象实例化晚于B对象;形如:
1 2 3 |
@Autowired @Lazy private ServiceA serviceA; |
2)在A类上使用@DependsOn注解,保证A对象实例化晚于B对象(注意如果AB两个类相互DependsOn,也会形成循环依赖)
3)设置 AbstractAutowireCapableBeanFactory.setAllowRawInjectionDespiteWrapping(true),不会报错但会导致B持有的A引用不是最终的代理对象;
4)不使用@Async注解,通过自定义异步工具类发起异步线程;