spring boot 中 DispatcherServlet 相关配置

本文介绍在SpringBoot中自定义DispatcherServlet的三种方法,包括通过application.properties配置、使用ServletRegistrationBean注入新映射及仅配置加载方式。适用于希望深入理解SpringBoot路由配置的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                       

1. 自定义配置mapping映射路径

可以在application.properties加入配置,如:

server.servlet-path=/api/*
  
  • 1

也可以注入一个新的ServletRegistrationBean用于映射新的url:

//自动注入spring boot默认的上传配置@Autowiredprivate MultipartConfigElement multipartConfigElement;@Autowiredprivate DispatcherServlet dispatcherServlet;@Beanpublic ServletRegistrationBean apiServlet() {    ServletRegistrationBean bean = new ServletRegistrationBean(dispatcherServlet);    //注入上传配置到自己注册的ServletRegistrationBean    bean.addUrlMappings("/api/*");    bean.setMultipartConfig(multipartConfigElement);    bean.setName("apiServlet");    return bean;}
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在spring boot中配置多个DispatcherServlet 文章传送门

2. 自定义的web.xml配置

java配置

public class MyWebAppInitializer implements WebApplicationInitializer {     @Override     public void onStartup(ServletContext container) {        XmlWebApplicationContext appContext = new XmlWebApplicationContext();        appContext.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml");        ServletRegistration.Dynamic dispatcher =         container.addServlet("dispatcher", new DispatcherServlet(appContext));        dispatcher.setLoadOnStartup(1);        dispatcher.addMapping("/");     }  }  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

代替Xml代码

<servlet>    <servlet-name>dispatcher</servlet-name>    <servlet-class>      org.springframework.web.servlet.DispatcherServlet    </servlet-class>    <init-param>      <param-name>contextConfigLocation</param-name>      <param-value>/WEB-INF/spring/dispatcher-config.xml</param-value>    </init-param>    <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>dispatcher</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping>  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3. 只配置 DispatcherServlet的加载

可以在application.properties加入配置,如:

spring.mvc.servlet.load-on-startup=1
  
  • 1

也可以在spring boot的启动类中加入下面代码

@Beanpublic static BeanFactoryPostProcessor beanFactoryPostProcessor() {    return new BeanFactoryPostProcessor() {        @Override        public void postProcessBeanFactory(                ConfigurableListableBeanFactory beanFactory) throws BeansException {            BeanDefinition bean = beanFactory.getBeanDefinition(                    DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME);            bean.getPropertyValues().add("loadOnStartup", 1);        }    };}
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值