Spring Boot 中的 DispatcherServlet 和 web.xml

新手上路,请多包涵

我目前正在尝试将我的项目从 Java EE 转移到 Spring Boot 项目。但是,我一直对调度程序 servlet 和 web.xml 感到困惑和困惑,而且项目似乎不再读取 web.xml。当前项目在tomcat 7上运行。

In my web.xml file, I have lots of servlet , servlet-mapping , filter and filter mapping and I don’不太了解如何在调度程序中进行映射。

我在下面附上了我的 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>

问:

  1. 我是否应该将 web.xml 中的所有内容转换为依赖 spring 调度程序,如果是,我该如何实现?
  2. 正在远离 web.xml 进行 spring boot 项目的方式?

任何人都可以在这里指导我吗?谢谢!!

原文由 NatureWonder 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答
  1. 是的,spring boot 不再依赖 xml 配置,它会自动配置一个等同于 dispatcher servlet 的配置。您可以点击以下链接查看如何注册您的过滤器: How to add a filter class in Spring Boot?
  2. 如果您使用 maven 而不是 gradle,则您的 spring boot 项目中唯一的 XML 应该是 pom.xml 。使用 spring boot 的方法是将所有 xml 配置、web.xml 等移动到 spring boot 的自动配置 + 你的 java 配置。

当您在 Java 配置中执行所有操作并遵循其原则时,Spring Boot 工作得非常好。根据我的经验,当您开始合并 XML 配置和遗留 spring 时,它开始破坏自动配置过程,最好尽可能多地尝试遵守新的 spring boot 最佳实践。

原文由 Tom 发布,翻译遵循 CC BY-SA 4.0 许可协议

  1. 你可以保留你的 web.xml ,但它需要添加
   <listener>
        <listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class>
   </listener>

web.xml 。并且,需要依赖 pom.xml

  1. 所有的侦听器类,过滤器在 Java 类中转换。此类将是 @Configuration.

  2. 如果您有拦截器,则可以将其移至配置类。

原文由 Md Jalal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题