Я создал сценарий ниже, чтобы понять зависимость 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";
}
}
Это дает ошибку:
Описание:
Зависимости некоторых компонентов в контексте приложения образуют цикл:
demoApplication (поле private com.example.demo.beans.BeanA com.example.demo.DemoApplication.beanA)
Поэтому поддержка Spring позволяет избежать этого или мы должны изменить дизайн.если так, пожалуйста, предложите какой-нибудь дизайн.