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을 이용하여 간단하게 스프링과 관련된 로그가 기록되는 것을 볼 수 있다.
위 게시글은 '코드로 배우는 스프링 웹 프로젝트 - 구멍가게 코딩단' 을 참고하여 작성되었습니다.
'SERVER > SPRING' 카테고리의 다른 글
[vue + spring] 스프링 몰라도 vue랑 스프링 연동하기 (0) | 2021.02.03 |
---|---|
Eclipse STS 환경설정 (0) | 2019.10.19 |