首页 > 其他分享 >记一次循环依赖问题(仍有问题,没解决)

记一次循环依赖问题(仍有问题,没解决)

时间:2022-11-30 19:39:32浏览次数:38  
标签:依赖 java support factory springframework 问题 循环 beans org


错误信息: 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-11-03 14:35:21 [main] ERROR o.s.boot.SpringApplication- Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'vrBusinessHallAdmin' defined in file [D:\workspace\moses\vr-web\target\classes\cn\vpclub\moses\vr\web\admin\VrBusinessHallAdmin.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'vrBusinessHallServiceImpl': Bean with name 'vrBusinessHallServiceImpl' has been injected into other beans [vrPanoramaServiceImpl] 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 'getBeanNamesForType' with the 'allowEagerInit' flag turned off, for example.
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1338)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
at org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$145/1392794732.getObject(Unknown Source)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:866)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:142)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
at cn.vpclub.moses.vr.web.SaApplication.main(SaApplication.java:13)
Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'vrBusinessHallServiceImpl': Bean with name 'vrBusinessHallServiceImpl' has been injected into other beans [vrPanoramaServiceImpl] 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 'getBeanNamesForType' with the 'allowEagerInit' flag turned off, for example.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:621)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
at org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$145/1392794732.getObject(Unknown Source)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1276)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1196)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
... 20 common frames omitted

原因:

VrPanoramaServiceImpl类中注入了IVrBusinessHallService类,
VrBusinessHallServiceImpl中注入了IVrPanoramaService类.

产生了循环依赖的问题

解决:

使用setter方法

如:

@Autowired
private IVrPointService vrPointService;

private IVrBusinessHallService businessHallService;

//todo 使用setter解决循环依赖问题
@Autowired
public void setBusinessHallService(IVrBusinessHallService businessHallService){
this.businessHallService = businessHallService;
}

同时,另一个类中

private IVrPanoramaService panoramaService;

@Autowired
public void setPanoramaService(IVrPanoramaService panoramaService){
this.panoramaService = panoramaService;
}

标签:依赖,java,support,factory,springframework,问题,循环,beans,org
From: https://blog.51cto.com/u_12528551/5900306

相关文章