[Spring] ApplicationContext.xml 와 ServletContext.xml

cateto·2021년 1월 20일
0

매일하는Spring

목록 보기
4/4
post-thumbnail

어노테이션 선언방식

@Component - - @Controller : 컨트롤러

		   - - @Service : 서비스(모델,비즈니스로직)

		   - - @Repository : DAO

@Component를 쓰는 것보다 세부적으로 어노테이션을 선언해주는 것이 명시적이다.

applicationContext.xml (=root-context.xml)

<context:component-scan base-package="com.first" />

해당 경로를 포함한 모든 하위 경로에 Annotation을 명시한 Java파일이 Bean으로 등록되어 사용 가능해진다.

<!-- root-context에서는 Controller를 제외한 나머지 자원을 제어할 수 있도록 범위를 지정해준다. -->
	<context:component-scan base-package="com">
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
	</context:component-scan>

Root WebApplicationContext 에서는 View자원 이외의 자원을 구성한다.

즉, controller를 제외하고 전역으로 공유하는 나머지 설정을 하면되는 것이다.

cf. context:component-scan 의 use-default-filters 속성의 기본값이 true이기때문에 따로 적지 않았다.

다음으로 하위태그를 살펴보면 context:exclude-filter 태그가 있는데, 이것은 context-component-scan의 기본 필터 중 특정한 필터를 제외하기 위한 설정 부분이다.

👩 xml 해석 : "com에 대한 모든 하위 경로에 component-scan의 기본 필터를 사용하고 annotation 타입의 controller 필터만 제외한다."

Servlet-Context.xml

<!-- root-context에서 제외한 컨트롤러는 서블릿 컨텍스트에 등록한다 -->
	<context:component-scan base-package="com.mboard.controller" use-default-filters="false">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
	</context:component-scan>

Servlet WebApplicationContext 에는 주로 View 자원을 구성한다.

즉, Controller에 관한 설정만 구성한다고 볼 수 있다.

cf. 위의 코드를 살펴보면 context:component-scan 태그에 use-default-filters 속성을 볼 수 있는데, 이름 그대로 해당 패키지에 기본 필터를 적용할지 여부를 설정하는 부분이다. (기본값 : true)

다음으로, 하위 태그를 살펴보면 context:include-filter 태그가 있는데 이는 context:component-scan에 설정된 기본 필터 이외에 필터를 추가하기 위한 설정 부분이다.

👩 xml 해석 : " com.mboard.controller에 대한 모든 하위 경로에 component-scan의 기본필터를 제외하고 annotation 타입의 Controller 필터만 추가한다."

출처 : https://jayviii.tistory.com/10

profile
Curious for Everything

0개의 댓글