久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

spring boot 實現配置多個DispatcherServlet最簡單方式

瀏覽:32日期:2023-07-25 15:06:53

傳統的web項目,只需要在web.xml里配置多個即可,并且支持多個url-pattern

在spring boot中,我們默認無需配置,系統會自動裝配一個,感興趣的可以看下源碼

org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration

里面有個 DispatcherServletRegistrationBean,關鍵是這里只能指定一個path,如下的源碼截圖

spring boot 實現配置多個DispatcherServlet最簡單方式

spring boot 實現配置多個DispatcherServlet最簡單方式

spring boot 實現配置多個DispatcherServlet最簡單方式

如果想要指定多個,我們只能自己寫DispatcherServletRegistrationBean這個Bean了,那么系統就不會實例化內置的那個了,如下代碼

@Autowired

private WebMvcProperties webMvcProperties;@Autowiredprivate MultipartConfigElement multipartConfig;

@Bean @Primary

public DispatcherServletRegistrationBean dispatcherServlet1(DispatcherServlet dispatcherServlet) { DispatcherServletRegistrationBean registration = new DispatcherServletRegistrationBean( dispatcherServlet, '/*'); registration.setName('dispatcherServlet1'); registration.setLoadOnStartup( this.webMvcProperties.getServlet().getLoadOnStartup()); if (this.multipartConfig != null) { registration.setMultipartConfig(this.multipartConfig); } return registration;}

@Bean

public DispatcherServletRegistrationBean dispatcherServlet2(DispatcherServlet dispatcherServlet) { DispatcherServletRegistrationBean registration = new DispatcherServletRegistrationBean( dispatcherServlet, '/aaa/*'); registration.setName('dispatcherServlet2'); registration.setLoadOnStartup( this.webMvcProperties.getServlet().getLoadOnStartup()); if (this.multipartConfig != null) { registration.setMultipartConfig(this.multipartConfig); } return registration;}

@Bean

public DispatcherServletRegistrationBean dispatcherServlet3(DispatcherServlet dispatcherServlet) { DispatcherServletRegistrationBean registration = new DispatcherServletRegistrationBean( dispatcherServlet, '/bbb/*'); registration.setName('dispatcherServlet3'); registration.setLoadOnStartup( this.webMvcProperties.getServlet().getLoadOnStartup()); if (this.multipartConfig != null) { registration.setMultipartConfig(this.multipartConfig); } return registration;}

這樣我們參考底層源碼,我們做了三個Bean,注意有一個一定要加上@Primary注解,否則啟動會有報錯。

如果我們系統有一個接口url是/api/test,那么通過/aaa/api/test或者/bbb/api/test也都可以訪問了。

不建議的寫法、、、

@Bean public ServletRegistrationBean apiDispatcherServlet(){ AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext(); applicationContext.scan('com.be.edge.asset.web.api'); DispatcherServlet apiDispatcherServlet = new DispatcherServlet(applicationContext); ServletRegistrationBean registrationBean = new ServletRegistrationBean(apiDispatcherServlet); registrationBean.addInitParameter('throwExceptionIfNoHandlerFound', 'true'); registrationBean.setLoadOnStartup(1); registrationBean.addUrlMappings('/api/*'); registrationBean.setName('apiDispatcherServlet'); return registrationBean; } @Bean public ServletRegistrationBean mgmtDispatcherServlet(){ AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext(); applicationContext.scan('com.be.edge.asset.web.controller'); DispatcherServlet apiDispatcherServlet = new DispatcherServlet(applicationContext); ServletRegistrationBean registrationBean = new ServletRegistrationBean(apiDispatcherServlet); registrationBean.setLoadOnStartup(2); registrationBean.addInitParameter('throwExceptionIfNoHandlerFound', 'true'); registrationBean.addUrlMappings('/mgmt/*'); registrationBean.setName('mngDispatcherServlet'); return registrationBean; }

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Spring
相關文章:
主站蜘蛛池模板: 免费一区 | 最新国产精品 | 久久免费精品视频 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | av三级在线免费观看 | 亚洲视频 欧美视频 | 成人欧美| 黄色资源网站 | 日韩毛片免费在线观看 | 国产精品国产精品国产专区不卡 | 欧美日韩亚洲国产综合 | 天堂动漫 | 久久国产精品99久久久久久牛牛 | 国产精品乱码一区二区三区 | 国产欧美精品一区二区三区四区 | 成人免费一区二区三区视频网站 | 日日干天天干 | 久久国产一区二区 | 欧美一级片在线 | t66y最新地址一地址二69 | 日韩在线中文字幕 | 久产久精品 | 亚洲九九| 亚洲一区 中文字幕 | 永久看片 | 亚洲午夜av | 国产一级片儿 | 一 级 黄 色 片免费网站 | 亚洲一区二区久久 | 婷婷在线视频 | 国内精品视频一区二区三区 | 久久免费看 | 亚洲视频免费在线观看 | 国产视频中文字幕 | 亚洲免费精品 | 99爱视频 | 欧美一级免费看 | 久久久www | 久一在线 | 自拍偷拍专区 | 国产一区二区三区视频 |