我创建了以下场景以了解Spring Circular依赖性。
当范围是单身时它很干净。但是当S COPE是PROTOTYPE时会发生冲突。
所以我想知道Spring支持是否避免出现以下情况,或者我们是否应该更改设计。如果是的话请提出一些设计。
考虑下面的例子。
@Service
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class BeanB {
private BeanA beanA;
@Autowired
public void setBeanA(BeanA beanA) {
this.beanA = beanA;
}
public void printBeanB() {
System.out.println(getBeanName());
}
public void printBeanBBeanA() {
System.out.println(getBeanName() + " - " + beanA.getBeanName());
}
public String getBeanName() {
return "Bean B";
}
}
@Service
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class BeanA {
private BeanB beanB;
@Autowired
public void setBeanB(BeanB beanB) {
this.beanB = beanB;
}
public void printBeanA() {
System.out.println(getBeanName());
}
public void printBeanABeanB() {
System.out.println(getBeanName() + " - " + beanB.getBeanName());
}
public String getBeanName() {
return "Bean A";
}
}
这是一个错误:
说明
应用程序上下文窗体中某些bean的依赖关系 一个周期:
demoApplication(字段私有com.example.demo.beans.BeanA com.example.demo.DemoApplication.beanA)
Spring支持是否可以避免这种情况,或者我们应该改变设计。如果是的话请提出一些设计。
答案 0 :(得分:0)
我可以通过使用@Lazy注释解决此问题,如下所示。
> sessionInfo()
R version 3.4.4 (2018-03-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)