티스토리 뷰

기존 'Spring Legacy Project'의 경우 기본적으로 XML 기반으로 스프링 관련 설정을 하도록 되어 있습니다.

Spirng 3번전 이후부턴 Java 클래스를 이용하여 스프링 설정을 할 수 있도록 지원합니다.

오늘은 이를 학습해보도록 하겠습니다.

 

1. 제일 먼저 'Spring Legact Prject' 예제 프로젝트를 만듭니다.

생성된 프로젝트

 

2. 예제 프로젝트를 생성후 기존 설정 파일인 xml 파일을 삭제합니다. 대상은 'web.xml, servlet-context.xml, root-context.xml' 입니다.

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 버전 이후부터 지원됩니다.

설정 후 프로젝트

댓글
공지사항