STS툴에서 레거시 프로젝트의 경우 XML기반으로 스프링관련 설정을 하도록 구성되어있으며, 스프링 3버전 이후부터는 XML뿐만이 아닌 자바클래스 파일을 이용하는 스프링 설정을 지원한다. 자바로 스프링 설정을한다라.. 어떻게 할 수 있을까. 지금부터 알아보자.
자바로 스프링을 설정하는 과정은 크게 다음과 같다.
- web.xml 파일 삭제 및 스프링 관련 파일 삭제
- pom.xml 수정 및 스프링 버전 변경
- Java 설정 관련 패키지 생성
1. 자바로 설정하기 위해 우선 기본적으로 레거시 프로젝트가 가지고 있는 설정관련 XML파일을 삭제
삭제해야할 XML파일은 web.xml, servlet-context.xml, root-context.xml 이다. servlet-context.xml과 root-context.xml파일은 spring 디렉토리 내에 존재하기 때문에 spring디렉토리를 통째로 삭제해주면된다.
삭제한 각 파일들을 간단히 살펴보자.
- web.xml
web.xml은 DD(Deployment Descriptor), 즉 배포서술자라고 불리며, 톰켓의 환경설정을 담당한다. JAVA EE스펙의 프로젝트들은 톰캣이 들고 있는 web.xml과 프로젝트가 가지고 있는 WEB-INF의 web.xml를 거쳐 실행되게 된다. - servlet-context.xml
servlet-context.xml은 서버실행 후에 request요청이 들어올때마다 메모리를 띄우는 것들을 설정하는 공간이다.
- root-context.xml
스프링에서 관리해야 하는 객체(Bean)를 설정하는 파일이며, root-context.xml이 들고 있는 정보들은 서버실행시 딱한번 메모리에 뜨게된다.
2. web.xml파일 삭제시 pom.xml에서 발생하는 오류를 잡아주기 위해 아래 코드들을 pom.xml에 추가 및 수정
-추가-
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
-수정-
//자바 버전을 1.8로 수정
<properties>
<java-version>1.8</java-version>
<org.springframework-version>5.0.7.RELEASE</org.springframework-version>
<org.aspectj-version>1.6.10</org.aspectj-version>
<org.slf4j-version>1.6.6</org.slf4j-version>
</properties>
//컴파일 관련 버전 1.8로 수정
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgument>-Xlint:all</compilerArgument>
<showWarnings>true</showWarnings>
<showDeprecation>true</showDeprecation>
</configuration>
</plugin>
3. 프로젝트에 마우스 우클릭하고 'Maven' -> 'Update Project' 로 이동하고 기본값으로 'OK' 클릭
이렇게 자바로 스프링 관련 설정을 하기위한 준비는 끝났다. 이제 자바 코드 작성을 시작하자.
자바설정을 이용하는 경우 XML 대신 설정 파일을 직접 작성해주어야 한다. 스프링에서는 @Configuration 어노테이션을 통해 해당 클래스의 인스턴스를 활용하여 설정파일을 대신할 수 있다.
4. 프로젝트 내에 'org.zerock.config' 패키지를 생성하고 'RootConfig' 클래스를 작성한다.
5. 'org.zerock.config' 패키지 내에 'WebConfig' 클래스를 생성하고 아래와 같이 코드를 작성하면 끝
package org.zerock.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer{
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] {RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return null;
}
}
기존 프로젝트에서는 web.xml을 이용하여 스프링을 구동시켰지만, xml을 사용하지 않는 경우에는 이 역할을 대신하는 클래스를 작성해서 처리한다. 작성된 'WebConfig' 클래스는 'AbstractAnnotationConfigDispatcherServletInitializer'로부터 3개의 추상 메서드를 오버라이딩한다. 이때 생성된 'getRootConfigClasses()' 메서드는 'root-context.xml'을 대신하며 'root-context.xml' 역할을 수행하게될 RootConfig클래스를 'getRootConfigClasses()' 메서드의 반환값으로 지정해주면 자바를 활용한 'root-context.xml' 관련 설정 셋팅을 마친것이다. 이제 'root-context.xml'에 들어갈 설정들을 RootConfig클래스에서 작성하면 된다.
6. 서버를 실행하여 스프링 구동이 되는지 로그를 통해 확인
위와 같이 로그기록이 뜬다면 자바 코드를 활용해 스프링 구동 설정이 정상적으로 이루어졌다는 것을 의미한다.
'Spring > Spring Legacy' 카테고리의 다른 글
Spring Legacy / MyBatis 연동 및 사용하기 (1) | 2020.09.23 |
---|---|
Spring Legacy / DBCP 설정하기 (0) | 2020.09.15 |
Spring Legacy / JDBC 연결 테스트하기 (0) | 2020.07.30 |
Spring Legacy / 단위 테스트하는 방법 (0) | 2020.07.29 |
Spring Legacy / DI설계 방법 (0) | 2020.07.24 |