본문으로 바로가기

◎ JAVA Configuration을 하는경우 (java  vs  xml)


-Eclipse(STS)를 통해 생성하는 'Spring Legacy project'의 경우 XML기방으로 스프링 관련 설정을 하도록 되어있다.

스프링 3번전 이후에는  JAVA 클래스 파일을 이용한 설정 지원하는데 .요즘 XML설정 외에도 JAVA 를 이용한 설정이 점점 증가하고 있다 .

(국내는 아직 XML방식이 많있음)


서두에 배웠던 ( 참고해 주세요 http://tjsdudkim.tistory.com/72?category=768042  이건 xml 기반)

 'Spring Legacy project'  프로젝트를 생성합니다.(java설정 방법으로 진행할 프로젝트 생성 )


-jex00프로젝트 생성-


이후에는  다음과 같은 작업을 할 것이다 

→ web.xml의 파일 삭제 및 스프링 관련 파일 삭제 

→ pom.xml의 수정 및 스프링 버전 변경 

→ JAVA설정 관련 패키지 생성

 1.xml파일 삭제 


web.xml + servlet-context.xml + root--context.xml 를   삭제 (Spring이라는 폴더 자체를 삭제하면 된다)

web.xml 과 달리 다른 파일들은 spring이라는 이름의 폴더 내에 있으므로 spring폴더 자체를 삭제하고, 아래 형태가 되어야 함.



web.xml을 삭제하면 pom.xml에서 에러가 발생 -> 과거의 웹 프로젝트들이 기본적으로 web.xml을 사용하는 것을 기본으로 설정 했기 때문임.

에러 해결 방법 = pom.xml의 하단 부에 아래 코드 추가 해준다 


          <!--plugin 추가 java설정   -->

      

1
2
3
4
5
6
7
8
 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                   <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
    </plugin>
cs


pom.xml의 스프링 버전 변경


 <properties>

<java-version>1.8</java-version>

<org.springframework-version>5.0.7.RELEASE</org.springframework-version>



이후   

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



 

java설정을 이용하는 프로젝트는 기존과 달리 여러 설정 파일을 직접 작성해야 하므로 뒤의 예제들에서 사용하는 설정들을 추가해야만 정상상적으로 돌아간다 

( 순차적으로 통해서 알아봅시다) 

 


1. @Configuration

앞서 말한 것 처럼  java설정은  직접 작성으로 이뤄집니다 .

스프링에서는 @Configuration이라는 어노테이션을 이용해서 해당 클래스의 인스턴스를 이용해서 설정파일을 대신합니다 


프로젝트 내에 org.zerock.config패키지를 만드고 그곳에 RootConfig 클래스 생성 


생성후 이와 같이 작성 

package org.zerock.config;


import org.springframework.context.annotation.Configuration;


@Configuration

public class RootConfig {


}


2.web.xml을 대신하는 클래스 작성


월래는 web.xml을 이용해서  스프링을 구동 시켰지만 .xml을 사용하지 않으면 이 역할을 대신하는 클래스로 해서 작성하고 처리한다.

 org.zerock.config패키지에 WebConfig생성.

WebConfig클래스  AbstractAnnotationConfigDispatcherServletInitializer를 상속하여 작성.

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;


public class WebConfig extends


AbstractAnnotationConfigDispatcherServletInitializer{


@Override

protected Class<?>[] getRootConfigClasses() {

return null;

}


@Override

protected Class<?>[] getServletConfigClasses() {

return null;

}


@Override

protected String[] getServletMappings() {

return null;

}

}

3개의 추상 메서드 를 오버라이드 해줍니다

getRootConfig클래스 = 'root-context.xml'을 대신하는 클래스를 지정하는데 예제는 RootConfig 클래스를 사용하므로  아래와같이 메서드 내용변경


@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] {RootConfig.class};
}


톰켓 서버를 실행 시키면 설정된 것을 확인할 수 있다