2017-04-05 103 views
7

我目前正试图将我的项目从Java EE移至Spring Boot项目。 但是,我已经在调度程序servlet和web.xml的部分被困住了,似乎web.xml不再被项目读取。目前项目在Tomcat 7Spring Boot中的DispatcherServlet和web.xml

运行在我web.xml文件,我有很多的servletservlet-mappingfilterfilter 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配置上进行中继,它自动配置与调度程序servlet的等效项。你可以按照下面的链接了解如何注册您的过滤器:How to add a filter class in Spring Boot?
  2. 如果你使用Maven和不gradle这个,在春季启动项目的唯一XML应该是pom.xml。 Spring引导的方式是将所有的xml配置,web.xml等移动到spring引导的自动配置+你的java配置。

当你在java配置中做所有事情并遵循它的主体时,Spring引导工作的很好。根据我的经验,当您开始合并XML配置和传统弹簧时,它开始打破自动配置过程,并且尽可能多地尝试遵守新的spring引导最佳实践。

+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. 所有监听器类,过滤器转换在Java类。这个类是@Configuration.

  3. 如果你有一个可以移动到配置类的截击。

相关问题