2011-08-05 3 views
7

저는 스프링 3을 사용하여 새로운 프로젝트를 시작했고 주석을 사용하고 있습니다. 의존성을 주입하기 위해 클래스를 연결하는 것이 좋지만, 기본 패키지에서 context:component-scan을 시작하는 것은 나쁜 습관이라는 것을 알고 있습니다.컴포넌트 스캔을 위해 Spring 3에서 클래스를 구성하는 현명한 방법은 무엇입니까?

고유 한 xml 구성 파일이있는 DispatcherServlet을 사용하고 있습니다. 그것도 context:component-scan입니다. 내가 봄을 처음 배우기 시작했을 때, 구성 요소 스캔에서 겹쳐져 있고 여러 번 만들어지는 콩을 보았습니다. 나는 그것을 피하고 싶습니다.

중복되지 않고 모든 bean을 포괄하도록 내 패키지 또는 구성 요소 스캔을 구성하는 좋은 방법은 무엇입니까?

현재 나는이 같은 패키지가 : 나는 모든 패키지 콩이 경우는 쉬운 방법처럼 보인다

my.package.controller 
my.package.dao 
my.package.entity 
my.package.service 
my.package.util 

밖으로 applicationContext.xml에 <context:component-scan base-package="my.package"></context:component-scan>를 넣어 그것으로 할 수있을 것이다.

disp35cher의 xml에서 my.package.controller을 스캔하고 applicationContext.xml에서 나머지 (my.package.controller 제외)를 스캔하는 것이 더 좋습니까?

아니면 주석이 달린 모든 클래스를 한 영역에 배열하고 다른 영역을 다른 영역에 배열해야합니까? 같은 : 나는 대부분 그렇지 않으면 내 수업의 모든 기록을 추가 @Autowired를 사용하고

my.package.spring.controller 
my.package.spring.dao 
my.package.spring.entity 
my.package.spring.service 
my.package.spring.util 
my.package.notannotated 
my.package.notannotated2 

그래서 내가 주석되지 않습니다 어떤 수업을해야 모르겠어요.

구성이 달라 붙는 것이 싫어 ... 나는 코드에 집착하고 싶습니다. 누군가가 어떤 팁을 제공 할 수 있다면 쉽게 환영 할 수 있습니다.

감사합니다.

답변

12

예 - 주요 맥락에서 컨트롤러

<context:component-scan base-package="my.package"> 
    <context:exclude-filter type="regex" expression="my\.package\.controller.*"/> 
</context:component-scan> 

를 제외하고는 단지 컨트롤러 패키지를 스캔 당신의 DispatcherServlet 컨텍스트에서 모든 것을 스캔 할 수 있습니다.

+0

와우, 생각보다 쉽습니다. 감사합니다. 내 패키지 설정이 적절한가요? – Paul

+0

나에게 잘 어울리는데, 그것이 내가하는 일과 거의 동일합니다. – sourcedelica

관련 문제