[Spring Framework] 스프링 xml 설정을 Java 클래스로 하는 방법

Spring lagacy Project로 프로젝트를 생성한 경우!

 

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

2. pom.xml 에 web.xml 파일이 없다는 설정을 추가해야한다.

<plugins>
	...
	<!-- root-context, servlet-context, web.xml 없다는 플러그인 -->
    <!-- 자바로 설정할때 쓸것. -->
    <plugin>
    	<groupId>org.apache.maven.plugins</groupId>
        	<artifactId>maven-war-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
            	<failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
     </plugin>
</plugins>

3. Java로 설정하는 경우 xml파일의 역할을 Java 클래스가 대신하게 되므로 기능을 대신할 Java Class 3개를 만들어 줍니다.(Spring lagacy인 경우 스프링 버전이 3.x 대 버전이기 때문에 이를 5.x 대 버전으로 높이고 java 버전도 1.8정도로 맞춰주세요. pom.xml에서, 그래야 밑에 3개의 클래스들이 상속/구현할 클래스/인터페이스들이 가져와집니다.)

- WebConfig.java (AbstractAnnotationConfigDispatcherServletInitializer 클래스 상속)

- RootConfig.java 

- ServletConfig.java (WebMvcConfigurer 인터페이스 구현)

 

4. 각각의 클래스에 내용을 추가합니다.

ServletConfig.java
package org.zerock.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

@EnableWebMvc
@ComponentScan(basePackages= {"org.zerock.controller"})
public class ServletConfig implements WebMvcConfigurer{
	
	@Override
	public void configureViewResolvers(ViewResolverRegistry registry) {
		InternalResourceViewResolver bean = new InternalResourceViewResolver();
		bean.setViewClass(JstlView.class);
		bean.setPrefix("/WEB-INF/views/");
		bean.setSuffix(".jsp");
		registry.viewResolver(bean);
	}
	
	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
	}
	
}

- ServletConfig 클래스는 주로 다음과 같은 방식을 사용하는데

 1. 예제처럼 @EnableWebMvc 어노테이션과 WebMvcConfigurer 인터페이스를 구현하는 방식.

 2. @Configuration과 WebMvcConfigurationSupport 클래스를 상속하는 방식 -> 일반 @Configuration 우선순위가 구분되지 않는 경우에 사용한다고함.

 

RootConfig.java

package org.zerock.config;

import org.springframework.context.annotation.Configuration;

@Configuration
public class RootConfig {

}

- 설정이 있을 때 채워줍니다.

 

WebConfig.java
package org.zerock.config;

//자바로 설정하는 경우 : servlet-context, root-context, web.xml 파일 삭제
// pom.xml 에 plugin 추가 

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 new Class[] {ServletConfig.class};
	}

	@Override
	protected String[] getServletMappings() {
		return new String[] {"/"};
	}

}

- Config 자바파일들을 설정해줌.

댓글

Designed by JB FACTORY