본문 바로가기
Spring/Spring Legacy

Spring Legacy / 자바파일로 스프링 관련 설정하기

by LWM 2020. 7. 23.
반응형

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. 서버를 실행하여 스프링 구동이 되는지 로그를 통해 확인

위와 같이 로그기록이 뜬다면 자바 코드를 활용해 스프링 구동 설정이 정상적으로 이루어졌다는 것을 의미한다.

반응형