Spring/Spring Legacy

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

LWM 2020. 7. 23. 20:19
반응형

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

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

반응형