스프링 빈 팩토리에서 순환 의존성을 사용하는 것의 함정은 무엇입니까? 예를 들어 콩 공장 A를 B와 B에 의존하게 만드는 것은 A?스프링 빈 팩토리의 순환 의존성
답변
세터 또는 필드를 사용하여 순환 종속성을 만들면 그다지 문제가되지 않습니다. 초기화가 이러한 의존성에 의존하는 경우 모든 bean이 생성되고 삽입 된 후에 init을 수행해야합니다.
생성자가 삽입 된 경우 결과 개체를 생성하는 것이 실제로 가능하지 않습니다. 그러나, 예를 들어. Guice는 Bean 중 하나에 "shell"프록시를 삽입하여 어쨌든 할 수 있습니다. B가 필요한 A를 구성 할 때 B의 빈 통과 프록시를 해킹하고이를 주입합니다. 그런 다음 B를 구성하여 적절한 A를 제공합니다. 그런 다음 프록시로 돌아가서 B를 프록시에 넣습니다. 이제 B가 아니라 B의 프록시가 A에 있습니다. 이것은 문제가 될 수도 있고 아닐 수도 있습니다. 나는 이것을 싫어하는 경향이있어서 결과를 예측할 수 없다. (밥 "crazybob"봄이 이제 구현 JSR 330)로 결국 그 주석 기반 구성 (과 Guice을 만든 리, 그 선택했고, 후회를.) 또한
, 순환 의존성 나쁜 건축을 가리킨다. 원이없는 전체 코드 그래프를 구성 할 수 있어야합니다. 종속성 그래프는 DAG (Directed Acyclic Graph) 여야합니다. 그리고 이것을 위반할 때 오류가 발생해야합니다! (그러나 인젝터는 분명히 DAG를 정렬 한 다음 위쪽으로가는 리프 노드로 시작해야합니다. Guice는 "프록시를 사용하지 마십시오"를 설정하더라도 아무 것도하지 않으므로 무작위로 프록시를 사용하지 않거나 프록시를 사용하지 않아도 프록시를 사용할 수 있습니다. 옵션을 켜면 옵션이 무의미 해집니다.
- 1. setter를 사용한 스프링 순환 의존성
- 2. 봄 보안 순환 빈 의존성 오류
- 3. 스프링 부트 1.4.0 순환 의존성 예외
- 4. 스프링 MVC @ 자동 전화가 작동하지 않음 - 순환 의존성? 여기
- 5. 순환 의존성 테스팅
- 6. 파이썬의 순환 모듈 의존성
- 7. 몽구스 - 가능한 순환 의존성?
- 8. 장고의 순환 의존성
- 9. 순환 의존성, 닭과 계란
- 10. 순환 의존성 angularjs
- 11. C++ 순환 헤더 의존성
- 12. 클래스의 순환 의존성
- 13. 순환 의존성 처리
- 14. Django : 순환 의존성 제거
- 15. 유창한 nhibernate 순환 의존성
- 16. 식에서의 순환 의존성 확인
- 17. make : 순환 의존성 감소
- 18. 스프링 빈에 의존성 삽입하기
- 19. C++ 트리와 순환 의존성 피하기
- 20. Guice의 보조 주입과의 순환 의존성
- 21. 클래스 간 순환 의존성 PHP
- 22. 순환 의존성 - 앞으로 선언 충분하지
- 23. Flyway Gradle plugin - 순환 의존성
- 24. observables 간의 순환 의존성 잡기
- 25. 순환 의존성 양호 또는 불량입니까
- 26. Ruby : 순환 의존성 자동 로딩
- 27. 스프링 빈 스레드 안전성
- 28. 스프링 프레임 워크가 순환 종속성을 관리하는 방법
- 29. 스프링 의존성 삽입이 실패했습니다.
- 30. 스프링 의존성 주입 보안
왜 이런 식으로해야합니까? –
@Tichodroma I 우리가 그것을 피하는 것을 안다. 그러나 나는 유용 할 수있는 경우가있다. 결정하기 전에 나는 단지 몇 가지 견해를 얻고 싶었다. – Mangoose