2011-09-05 3 views
2

좋아, 이상한 질문처럼 들릴지 모르겠지만, 여기 잡기가있다. 우리는 여기에 다른 "설정"모드가있는 Spring 기반의 응용 프로그램을 가지고있다. 한 모드에서는 외부 리소스에 연결하는 추가 서비스 빈을 사용해야하며 다른 모드에서는 그렇지 않습니다.Spring : 시작할 때 서비스 bean을 초기화해야하는 가장 좋은 방법은 무엇입니까?

지금 내가 찾고있는 것은 한 가지 설정 모드에서 필요하지 않은 콩을 초기화하지 못하게하는 일종의 방법이며 표준을 사용하는 유일한 방법은 일을 수행하는 방법입니다 (예 : applicationContext.xml). no @Service 주석) 그리고 어쨌든 @Autowired(required=false)을 (옵션) 구성 요소에 따라 해당 빈에서 사용하십시오.

이 방법은 더 나아갈 수있는 유효한 방법입니까? 나는 주석 기반 배선의 용이성에서 너무 많이 풀고 싶지 않고 가능한 적은 XML 구성으로 작성하려고합니다 ...

답변

2

Spring 3.1을 사용할 수 있다면 원하는대로 할 수있는 프로필이라는 새로운 기능이 있습니다. 어노테이션 기반 코드와 함께 프로파일을 사용하는 방법을 설명하는 this blog post을 확인하십시오.

+0

매우 유용합니다! 이것은 내가 찾고있는 것입니다! 나는 3.1로 업그레이드 할 때가왔다 ... –

1

한 가지 방법은 서로 다른 "모드"에 대해 서로 다른 클래스를 분리하는 것입니다. 자신의 패키지에. 그런 다음 응용 프로그램 컨텍스트 xml에서 <context:component-scan> 요소를 사용하여 스캔 할 패키지와 그렇지 않은 패키지를 제어 할 수 있습니다. 또는 포함/제외 필터를 사용하십시오 (http://static.springsource.org/spring/docs/2.5.x/reference/beans.html#beans-scanning-filters 참조). 이렇게하면 예를 들어 사용자 지정 주석을 기반으로 제외 필터를 정의 할 수 있습니다.

+0

그렇습니다. 스캔하는 동안 applicationContext.xml의 제외 필터를 사용하는 것이 다른 옵션 일 수 있지만 문제의 서비스가 일반적인 패키지에없는 경우에는 약간 퍼지기는하지만이 경우에는 그렇지 않습니다 , 불행히도. –

관련 문제