티스토리 뷰
기존 'Spring Legacy Project'의 경우 기본적으로 XML 기반으로 스프링 관련 설정을 하도록 되어 있습니다.
Spirng 3번전 이후부턴 Java 클래스를 이용하여 스프링 설정을 할 수 있도록 지원합니다.
오늘은 이를 학습해보도록 하겠습니다.
1. 제일 먼저 'Spring Legact Prject' 예제 프로젝트를 만듭니다.
2. 예제 프로젝트를 생성후 기존 설정 파일인 xml 파일을 삭제합니다. 대상은 'web.xml, servlet-context.xml, root-context.xml' 입니다.
spring 폴더 내 다른 xml과 달리 web.xml을 삭제하면 pom.xml에서 에러가 발생하는데 이는 예전 웹 프로젝트들이 web.xml 사용을 기본으로 했기 때문입니다. 이를 해결하기 위해 pom.xml <plugins>에 설정을 추가합니다.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
3. 설정 추가 후 java-version, maven-compiler-plugin <configuration>내 <source>, <target>버전을 사용중인 자바 버전과 동일하게 변경 후 Maven > Update Project 합니다.
4. Java 설정파일을 만들기위해 com.example.context 패키지를 추가합니다. 추가된 패키지 내에 RootContext.java, WebContext.Java를 아래와 같은 내용으로 추가합니다.
WebContext.java
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebContext extends AbstractAnnotationConfigDispatcherServletInitializer{
@Override
protected Class<?>[] getRootConfigClasses(){
return new Class[] {RootContext.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return null;
}
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return null;
}
}
RootContext.java
@Configuration
public class RootContext {
}
AbstractAnnotationConfigDispatcherServletInitializer 상속받은 WebContext에서 Root 설정파일에 대한 파일 위치를 지정해줍니다.
※AbstractAnnotationConfigDispatcherServletInitializer 상속이 안된다면 pom.xml 속성 값에 org.springframework-version의 버전을 확인합니다. 정확히 3.2.x 버전 이후부터 지원됩니다.