SERVER/SPRING

[STS] Java Configuration

나나나나나나나ㅏ나난ㄴ나ㅏ나나 2019. 10. 19. 22:13
728x90

Eclipse(STS)를 통해 생성하는 'Spring Legacy Project'는 XML기반으로 스프링 관련 설정을 하도록 되어있다. 스프링 3 버전 이후에는 java 클래스 파일을 이요하는 설정을 지원한다.

 

Spring Legacy Project로 프로젝트를 새로 만들고 'org.zerock.controller'로 패키지를 설정한다.

 

프로젝트에서 다름과 같은 작업을 진행할 예정이다.

  • web.xml의 파일 삭제 및 스프링 관련 파일 삭제
  • pom.xml의 수정 및 스프링 버전 변경
  • Java 설정 관련 패키지 생성

 

1. XML 파일 삭제

'web.xml', 'servlet-content.xml', 'root-context.xml' 파일을 삭제한다.

 

<기존 디렉토리>

<삭제후 디렉토리>

 

web.xml을 삭제하면 pom.xml에서 에러가 나는데 이건 과거의 웹 프로젝트들이 기본적으로 web.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>

pom.xml의 스프링 버전과 java 버전을 변경한다.

<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버전으로 수정하고 'Mavne > Update Project' 를 실행한다.

<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>

 

2. @Configuration

Java 설정을 이용하는 경우 XML 대신 설정 파일을 직접 작성해야한다.

하지만 스프링은 @Configuration이라는 어노테이션을 이용하여 해당클래스의 인스턴스를 이용해서 설정 파일을 작성한다.

 

프로젝트에 'org.zerock.config'라는 폴더를 생성하고 RootCofnig 클래스를 작성한다.

package org.zerock.config;

import org.springframework.context.annotation.Configuration;

@Configuration
public class RootConfig {

}

 

3. web.xml 을 대신하는 클래스

기존에는 web.xml을 이용하여 스프링을 구동시켰지만 XML을 사용하지 않기 때문에 이 역할을 대신 해줄 클래스가 필요하다.

프로젝트 내에 'org.zerock.config' 패키지 내에 WebConfig 클래스를 생성하여 AbstractAnno-tationCofigDispatcherServletInitializer 라는 추상클래스를 상속하도록 한다.

 

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;
	}
}

 

WebConfig 클래스는 3개의 추상메소드를 오버라이드 하도록 한다.

getRootConfig() 클래스는 'root-context.xml'을 대신하는 클래스를 지정하는데 RootConfig클래스를 사용하므로 다른 메소드와 달리 return null 이 아닌 return new Class[] {RootConfig.class}로 변경한다.

 

작성된 프로젝트를 Tomcat을 이용하여 간단하게 스프링과 관련된 로그가 기록되는 것을 볼 수 있다.

위 게시글은 '코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단' 을 참고하여 작성되었습니다.

728x90

'SERVER > SPRING' 카테고리의 다른 글

[vue + spring] 스프링 몰라도 vue랑 스프링 연동하기  (0) 2021.02.03
Eclipse STS 환경설정  (0) 2019.10.19