系列教程 · 2023年9月20日

升级Spring Framework后提示 This is often the result of over-eager type matching – consider using ‘getBeanNamesForType’ with the ‘allowEagerInit’ flag turned off, for example

升级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对象;形如:

 

2)在A类上使用@DependsOn注解,保证A对象实例化晚于B对象(注意如果AB两个类相互DependsOn,也会形成循环依赖)

3)设置 AbstractAutowireCapableBeanFactory.setAllowRawInjectionDespiteWrapping(true),不会报错但会导致B持有的A引用不是最终的代理对象;

4)不使用@Async注解,通过自定义异步工具类发起异步线程;