Spring MVC에서 Ichi에서 Java Config를 설정해 보았습니다.

10582 단어 자바spring-mvcspring

Spring MVC의 Java Config로 설정



Spring MVC의 기본 WEB 앱 설정 방법을 비망록으로 기재하겠습니다.
이 설정을 하면 Hello World 정도의 앱을 만들 수 있다고 생각합니다.

나 자신, 사내 연수로 Spring Boot에서는 앱을 작성한 경험이 있습니다만,
Spring MVC에서 처음부터 설정을하고 앱을 만들지 않았기 때문에 만들려고했습니다.
업무에서는 이미 설정 완료로 움직이는 상태의 것을 접하는 것이 대부분이었기 때문에, 이번은 매우 좋은 기회가 되었습니다.

그런데, xml 베이스의 설정도 가능합니다만, 이번은 Java 베이스로 설정을 실시해 갑니다.
우선 기초가 되는 설정 클래스의 일례를 몇개 소개해 갑니다.

WebAppInitializer


public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {


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

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

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return null;
    }

    @Override
    protected FrameworkServlet createDispatcherServlet(WebApplicationContext servletAppContext) {
        return new DispatcherServlet(servletAppContext);
    }

}

다음에 작성하는 설정 클래스(ApplicationConfig)와 본래 그대로의 DispatcherServlet를 등록하고 있습니다.
독자적인 구현을 추가하고 있는 경우는 이쪽의 설정을 변경하는 것으로 설정이 가능합니다.

ApplicationConfig


@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = true)
@ComponentScan(basePackageClasses = Application.class)
class ApplicationConfig {

    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        return new PropertySourcesPlaceholderConfigurer();
    }

}

주로 컴포넌트 스캔의 대상이 되는 어플리케이션 인터페이스의 설정을 실시하고 있습니다.
basePackageClasses 속성에 설정된 Application.class를 스캔할 패키지에 인터페이스로 작성하십시오.
또한 @EnableAspectJAutoProxy은 AspectJ를 사용하는 데 필요합니다.

WebMvcConfig


@Configuration
class WebMvcConfig extends WebMvcConfigurationSupport {

    private static final String CHARACTER_ENCODING = "UTF-8";

    private static final String VIEW_LOCATION = "/WEB-INF/view/";

    private static final String[] PROPERTIES_LIST = { "classpath:/MessageResources" };

    @Bean(name = "messageSource")
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasenames(PROPERTIES_LIST);
        messageSource.setCacheSeconds(5);
        messageSource.setDefaultEncoding(CHARACTER_ENCODING);
        return messageSource;
    }

    @Bean(name = "messageResources")
    public MessageResources messageResources() {
        return new MessageResources();
    }

    @Override
    protected void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp().prefix(VIEW_LOCATION).suffix("");
    }

}

여기에서는 주로 메시지 자원, ViewResolver의 설정을 실시하고 있습니다.
설정값은 적절히 변경해 주십시오.

jsp를 사용하는 경우 위와 같은 설정 형식에 문제가 없지만 Thymeleaf와 같은 템플릿 엔진을 사용하는 경우 설정을 변경해야합니다.
파일 업로드 관련(MultipartResolver)이나 tiles의 설정도 여기에서 가능합니다만, 이번 거기까지 마스트가 아니기 때문에 할애합니다.
( 다른 기사 로 쓸까)

Java 측에서의 주된 설정으로서는 이상이 됩니다.
그리고는 기분 정도에 web.xml를 써 줍니다.

web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">
    <display-name>Spring-MVC</display-name>

    <error-page>
        <error-code>404</error-code>
        <location>/WEB-INF/view/error/404.jsp</location>
    </error-page>
    <error-page>
        <error-code>405</error-code>
        <location>/WEB-INF/view/error/405.jsp</location>
    </error-page>
    <error-page>
        <error-code>500</error-code>
        <location>/WEB-INF/view/error/500.jsp</location>
    </error-page>

</web-app>

에러 페이지의 설정만으로 간단하네요.
filter나 listener의 설정, taglib의 커스터마이즈 등 필요에 따라서 이쪽에 추기해 가면 좋다고 생각합니다.
(filter · listener에 관해서는 Java Config에서도 설정 가능)

설정은 이상이며 나머지는 간단한 Controller, jsp를 구현하면 Hello World가 가능합니다.



죄송합니다.
Spring MVC로 앱 작성을 할 때 등에 도움이 되길 바랍니다.

끝.

좋은 웹페이지 즐겨찾기