bdfgdfg

rootContext.xml vs servletContext.xml vs web.xml 본문

웹프로그래밍/Spring

rootContext.xml vs servletContext.xml vs web.xml

marmelo12 2024. 1. 20. 21:47
반응형

스프링에서 Context라는 용어는 스프링이 빈(Bean)들을 관리하는 공간(컨테이너)이다.

 

그 컨테이너를 생성하기전 톰캣과 스프링은 여러 설정을 확인하고 초기화를 진행하게 되는데 그것이 제목과 관련된 xml.

 

web.xml

 - 스프링에 필요한 설정파일들의 경로를 지정하고 서버(WAS)가 구동될 때 가장 먼저 읽어들이는 환경설정 xml

root-context.xml

- 주로 DB, AOP(트랜잭션 매니저등), 비즈니스 로직을 처리하기 위한 bean등을 정의하는 곳.

- 웹 어플리케이션 전체에서 사용되는 bean등을 정의

여기에 정의된 bean들은 서블릿 컨텍스트에 공유된다. 

servlet-context.xml 

- 웹계층에서 필요한 bean들이나 view(뷰 리졸버, 타일즈등), 그리고 Controller들의 bean을 정의하는 곳이다.

 - root-context의 bean을 참조할 수 있으며 그 반대는 불가능.

 - 만약 두 컨텍스트가 동일한 bean을 들고있다면 servlet-context의 우선순위가 더 높다.

 

스프링은 사용자가 bean을 직접 정의할 수고를 덜기 위해 어노테이션을 제공해주는데, 대표적인 어노테이션들이 바로 @Controller, @Service, @Component등이다.

 

사용법은 밑의 설정을 xml에 넣어주면 된다.

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

base-package에 rootPackage를 설정해두면 해당 패키지 하위에 @Component 어노테이션들이 붙은 클래스를 스캔하여 컨테이너에 등록한다.

 -> @Controller, @Service도 Component에 속함

 -> 만약 특정 클래스만 빈으로 등록하고 싶거나 제외하고 싶다면 include-filter, exclude-filter를 통해 가능.

include
<context:component-scan base-package="com.test.app" use-default-filters="false">
	<!-- Controller만 스캔 -->
	<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>

exclude
<context:component-scan base-package="com.yedam.app">
	<!-- Controller만 제외하여 스캔 -->
	<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
</context:component-scan>

 

 

반응형

'웹프로그래밍 > Spring' 카테고리의 다른 글

스프링 프레임워크 간단히 짚기(DI,AOP)  (0) 2023.08.15
Comments