Springboot Async 引起的循环依赖

Springboot Async 引起的循环依赖

  • 问题

问题

今天遇到一个问题,本地打包没问题,运行也没问题,但是上服务器部署的时候,报错 错误:

org.springframework.beans.factory.BeanCurrentlyInCreationException:
 Error creating bean with name 'asyncConfigServiceImpl':
 Bean with name 'asyncConfigServiceImpl' has been injected into other beans [componentConfigVersionServiceImpl] 
 in its raw version as part of a circular reference, 
 but has eventually been wrapped.
  This means that said other beans do not use the final version of the bean. This is often the result of over-eager type matching - consider using 'getBeanNamesOfType' with the 'allowEagerInit' flag turned off, for example.

然后我的大致代码是这样的

@Service
@Slf4j
public class A {
    @Autowired
    private B b;
}
@Service
@Slf4j
public class B {
    @Autowired
    private A a;
    @Override
    @Async
    public void asyncUploadFileToBoss( ) {
        log.info("async start upload file ");
        a.uploadFileToBoss();
        log.info("async end upload file ");
    }
}

在不加 @Async 注解的时候,是没问题的,但是加了这个注解就会报错,原因:涉及到了springboot的 依赖加载 的顺序问题,想知道具体原因大家可以搜一下看下,这里主要是说一下解决方案

很简单在

@Service
@Slf4j
public class A {
	//这里加一个注解     @Lazy 就解决了
    @Autowired
    @Lazy
    private B b;
}

你可能感兴趣的:(spring,boot,后端,java)