Java 관련/Spring Legecy

[Spring] JavaConfig(xml을 java로 변경)

씨네 2022. 4. 12. 10:57
728x90

10. com/mvc/update/config/ApplicationConfig

com.mvc.update.config.ApplicationConfig를 만들어주세요!

applicationContext.xml의 내용을 applicationConfig로 옮기려고합니다.

xml파일의 이름은 Spring Bean Configuration File입니다.

클래스(.java)에 xml파일을 옮기기 위해서는 @Configuration 어노테이션이 필요합니다.

context:property의 내용은 클래스 위에 @PropertySource 어노테이션을 작성하면됩니다.

그리고 필드를 선언해서 @Value어노테이션으로 값을 주입합니다.

자바에서 Bean태그를 사용하기 위해서는 @Bean 어노테이션을 사용합니다.

11. com/mvc/update/config/ServletConfig(impl WebMvcConfigurer)

이번에는 servlet-context.xml을 java로 바꿔보겠습니다.

WebMvcConfigurer을 상속받는 클래스를 만들어주세요!

 

마찬가지로 xml파일에 대한 내용을 자바에서 사용하기 위해 @Configuration 어노테이션을 작성합니다.

이후 addResourceHandler를 @Override하여 메소드를 작성합니다.

또 Bean객체를 만들기위해 @Bean어노테이션을 사용합니다.

Component-scan을 사용하기 위해서는 @ComponentScan 어노테이션을 걸어주면됩나다.

12. web.xml

13. WEB-INF/spring/appServlet

(appServlet 폴더 삭제 - maven - update project)

14.com/mvc/update/config/WebConfig

(impl WebApplicationInitializer)

 

WebConfig.java

package com.mvc.update.config;

import javax.servlet.FilterRegistration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.ContextLoaderListener;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.DispatcherServlet;

public class WebConfig implements WebApplicationInitializer {

	@Override
	public void onStartup(ServletContext servletContext) throws ServletException {
		// ApplicationConfig : config 설정 클래스를 지정해주는 것
		AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
		applicationContext.register(ApplicationConfig.class);
		
		// Listener
		servletContext.addListener(new ContextLoaderListener(applicationContext));
		
		// ServletConfig
		AnnotationConfigWebApplicationContext servletConfig = new AnnotationConfigWebApplicationContext();
		servletConfig.register(ServletConfig.class);
		
		ServletRegistration.Dynamic dispatcherServlet = servletContext.addServlet("dispatcherServlet", new DispatcherServlet(servletConfig));
		dispatcherServlet.setLoadOnStartup(1);
		dispatcherServlet.addMapping("*.do");
		
		// encodingFilter
		FilterRegistration.Dynamic filterRegistration = servletContext.addFilter("encodingFilter", new CharacterEncodingFilter("UTF-8", true));
		filterRegistration.addMappingForUrlPatterns(null, true, "/*");
		
	}

}

15. pom.xml : failOnMissingWebXml -> false

<!-- web.xml 삭제 -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.5</version>
    <configuration>
    	<failOnMissingWebXml>false</failOnMissingWebXml>
    </configuration>
</plugin>
728x90