DispatcherServlet 和 web.xml in Spring Boot

2022-09-01 05:20:34

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

在我的文件中,我有很多 、和 ,并且我真的不知道如何在调度程序中执行映射。web.xmlservletservlet-mappingfilterfilter mapping

我附上了下面的一个示例,版本是2.5。web.xml

<?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
  2. 是否正在远离弹簧靴项目的道路?web.xml

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


答案 1
  1. 是的,Spring Boot 不再依赖于 xml 配置,它会自动配置一个等效于调度程序 servlet 的配置。您可以按照以下链接查看如何注册筛选器: 如何在 Spring Boot 中添加筛选器类?
  2. 如果您使用 maven 而不是 gradle,则 Spring Boot 项目中唯一的 XML 应该是 。使用spring boot的方法是将所有xml配置,web.xml等移动到spring boot的自动配置+java配置中。pom.xml

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


答案 2
  1. 您可以保留您的 ,但它需要添加web.xml

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

    在。并且,需要的依赖关系。web.xmlpom.xml

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

  3. 如果您有拦截器,则可以将其移动到配置类。


推荐