2017-04-05 8 views
7

현재 Java EE에서 Spring Boot 프로젝트로 프로젝트를 이동하려고합니다. 그러나 dispatcher 서블릿과 web.xml을 사용하여 혼란스럽고 혼란 스러웠습니다. web.xml이 더 이상 프로젝트에서 더 이상 읽지 않는 것 같습니다. 현재 프로젝트 내 web.xml 파일에서 바람둥이 7Spring 부트의 DispatcherServlet 및 web.xml

에서 실행되고, 나는 servlet, servlet-mapping, filterfilter mapping을 많이하고 난 정말 디스패처에 매핑을 수행하는 방법을 이해하지 않습니다.

내가 아래에있는 내 web.xml의 샘플을 첨부했습니다과 버전은 2.5입니다.

<?xml version="1.0" encoding="UTF-8"?> 
 
<web-app metadata-complete="true" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
 
    <display-name>displayName</display-name> 
 
    <description>description</description> 
 
    <resource-ref> 
 
    ... 
 
    </resource-ref> 
 
    <filter> 
 
    <filter-name>Some Filter Name</filter-name> 
 
    <filter-class>Some Filter Class</filter-class> 
 
    <init-param> 
 
     <param-name>Some Param Name</param-name> 
 
     <param-value>Some Value</param-value> 
 
    </init-param> 
 
    </filter> 
 
    <filter-mapping> 
 
    <filter-name>Some Filter Name</filter-name> 
 
    <url-pattern>Some url-pattern</url-pattern> 
 
    </filter-mapping> 
 
    <context-param> 
 
    <param-name>Some Param Name</param-name> 
 
    <param-value>Some Param Value</param-value> 
 
    </context-param> 
 
    <servlet> 
 
    <servlet-name>Some Servlet Name</servlet-name> 
 
    <servlet-class>Some Servlet Class</servlet-class> 
 
    </servlet> 
 
    <servlet-mapping> 
 
    <servlet-name>Some Servlet Name</servlet-name> 
 
    <url-pattern>Some Url Pattern</url-pattern> 
 
    </servlet-mapping> 
 
</web-app>

Qns :

  1. 내가 네 내가 그걸 어떻게 달성 할 수 있는지, 봄 발송자에 의존하는 내 web.xml에있는 모든 물건을 변환해야 하는가?
  2. 멀리 web.xml에서 봄 부팅 프로젝트에 갈 수있는 방법을 이동?

사람이 여기에 함께 나를 인도시겠습니까? 감사!!

답변

5
  1. 그렇습니다. 봄 부팅은 더 이상 XML 구성에서 릴레이되지 않으며 자동으로 디스패처 서블릿에 해당하는 내용을 구성합니다. 당신은 당신의 필터를 등록하는 방법을 보려면 다음 링크를 따라 할 수 How to add a filter class in Spring Boot?
  2. 당신이 받는다는 및 Gradle을하지를 사용하는 경우, 당신의 봄 부트 프로젝트의 유일한 XML은 pom.xml해야한다. 스프링 부팅과 함께가는 방법은 모든 xml 구성, web.xml 등을 스프링 부트의 자동 구성 + Java 구성으로 이동하는 것입니다.

스프링 구성은 Java 구성에서 모든 것을 수행하고 그 원칙을 수행 할 때 매우 유용합니다. 내 경험으로 볼 때 XML 구성과 레거시 스프링을 병합하기 시작할 때 자동 구성 프로세스가 중단되기 시작하며 새로운 스프링 부팅 모범 사례를 준수 할 수있을만큼 많이 시도 할 수 있습니다.

+0

감사합니다! 'web.xml '에있는 각 태그의 모든 값을'@ SpringBootApplication' 클래스에 등록해야한다고 말할 수 있습니까? – NatureWonder

+1

'@ SpringBootApplication' 클래스를 깨끗하게 유지하는 것이 더 좋습니다.예를 들어'config'라는 이름의'@ SpringBootApplication' 패키지 아래에 새 패키지를 만들고'FiltersConfiguration'이라는 이름의'@ Configuration' 주석 클래스를 만들고 필터를'@ Bean' 주석 메소드로 등록하기 시작하십시오. 이렇게하면 코드가보다 깨끗하고 읽기 쉽습니다. 필요에 따라 더 많은'@ Configuration' 클래스를 생성 할 수 있습니다. – Tom

0
  1. 당신은 당신의 web.xml을 유지할 수 있지만 web.xml

    <listener> 
        <listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class> 
    </listener> 
    

    를 추가 할 필요가있다. 그리고 필요한 종속성은 pom.xml입니다.

  2. 모든 리스너 클래스는, 필터는 자바 클래스로 변환합니다. 이 클래스는 @Configuration.

  3. 입니다. 구성 클래스로 이동할 수있는 인터셉터가있는 경우. 그를 명확히하기위한