2014-06-13 1 views
5

저는 수천 개의 빈을 가진 정말 큰 엔터프라이즈 애플리케이션과 클래스 간의 큰 의존성 그래프로 작업하고 있습니다. @Autowired 필드 (constuctor에서 autowiring)와 함께 Spring 3을 사용하고 있습니다.코드/의존성에서 ApplicationContext를 동적으로 빌드하십시오.

여러 종속성이있는 컨트롤러 중 하나, 더 많은 종속성이있는 컨트롤러 중 하나에 대해 통합 테스트를 만들려고합니다. 해결해야 할 클래스의 xml 정의를 작성할 수없는 경계선이 있습니다. 나쁜 프로젝트 구조 및 종속성 그래프 - 그러므로 나는 ApplicationContext 빌드 할 수 없습니다 ...

내가 뭘 하려는지는 클래스의 필드를 검색하고 콩 (구성 요소, 서비스 등) 경우, 코드에서 ApplicationContext에 추가하십시오.

내가 생각 relfection와 재귀 함수에서 클래스의 필드를 통해 반복하고 appcontext에 콩을 추가,하지만 난 아무 생각이 어떻게 할 수

이 ...

내가 어떻게 할 수 있습니까? 이것이 가능한가?

+0

빈의 지연 초기화로 응용 프로그램 컨텍스트를 구성하는 방법은 어떻습니까? –

+0

무엇을 의미합니까? 약간의 세부 사항을 추가하십시오 :) – Ezzored

답변

0

내가 뭔가를 놓치지 않으면 잘못된 문제를 해결하려고합니다. 모듈 구조가 그 상태에 있다면 동적으로 컨텍스트를 구축하는 것이 도움이되지 않습니다. 궁극적으로 전체 애플리케이션을 거의로드 할 것이기 때문입니다.

귀하의 앱에 공통된 "저수준"스택을 만드는 것이 좋습니다. 이는 별개의 모듈에 의해 합리적이고 명확하게 식별되는 것입니다. 일단 당신이 그것을 가지고, 주요 기능에 대한 경계를 만들기 시작하고 그들을로드하려고합니다.

당신이 그렇게 할 수 없다면, mocks를 사용하여 그래프의 의존성을 줄임으로써 테스트 애플리케이션 컨텍스트를로드 할 수 있습니다. 어쨌든, 길을 따라가는 밭을 발견하는 것은 당신에게 아무 것도 사지 않을 것입니다.

+0

당신은 절대적으로 옳습니다. 이것이 우리가 제안한 해결책이며,이를 달성하기 위해 수행해야 할 작업의 양 때문에 거부되었습니다. 모의 사용하기 : 예, 지금까지 우리가 사용한 것입니다. 이것은 int에서 "실제 코드"를 사용할 수 있는지 확인하기위한 탐색 적 작업입니다. 테스트 또는하지 ... – Ezzored

관련 문제