어노테이션 Component-scan 분리하기
어노테이션이 적용된 class(@Controller, @Service, @Repository 를 포함한 class)를
로딩 base-package로 부터 스캔을 할 때 Controller 타입은 제외 시킨다.
제외 시키는 이유는 spring mvc에 관련된 설정 파일은 dispatcher-servlet.xml 에서 스캔 하기 때문이다.
application-context.xml
<context:component-scan base-package="com.web.myproject" scoped-proxy="targetClass">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
scoped-proxy 는 아래의 3가지를 지정할 수 있다.
no : default, proxy를 생성하지 않는다.
interface : JDK Dynamic Proxy를 이용한 Proxy 생성
targetClass : CGLIB(code generator library)를 이용한 Proxy 생성
Dispatcher-servlet.xml
<context:component-scan base-package="com.web.myproject" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
base-package로 부터 스캔을 할 때, spring mvc에 관련된 Controller 타입만 스캔 한다.
기본 필터의 사용을 false로 지정하면 @Component, @Repository, @Service, @Controller
어노테이션을 사용하는 클래스를 bean으로 인식하지 않는다.
'Programming > Spring' 카테고리의 다른 글
[Spring] 스프링 트랜잭션 적용하기 (Spring + MyBatis + MySQL) (0) | 2014.12.09 |
---|---|
[Spring] @ResponseBody와 jackson을 이용하여 JSON 사용하기 (0) | 2014.12.08 |
[Spring] 게시판 페이징 (0) | 2014.11.18 |
[Spring] 게시판 파일 업로드, 다운로드 (0) | 2014.11.18 |
[Spring] Interceptor 설정 (0) | 2014.11.18 |