av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

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

瀏覽:41日期: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
相關文章:
主站蜘蛛池模板: 色网站在线 | 日韩久草| 日韩欧美一区二区三区 | 羞羞免费网站 | 老子午夜影院 | 久久国产精品偷 | 成人免费视频网站在线看 | 蜜桃在线视频 | 久久国产综合 | 中文字幕第7页 | 久久青草av| 久久免费精品 | 成人一级黄色毛片 | 国产精品久久在线观看 | 久久久久久91 | 一二三四av | 91影院 | 久久国产区| 老牛影视av一区二区在线观看 | 91久久久久久久久久久 | aaaaaa大片免费看最大的 | www.亚洲| 成人在线精品 | av大全在线 | 婷婷五月色综合 | 国产日韩一区二区三免费高清 | 瑞克和莫蒂第五季在线观看 | 欧美一区二区三区在线视频 | 高清色视频| 日韩在线中文字幕 | 九九视频网| 欧美在线视频一区二区 | 日韩欧美精品一区 | 国产精品不卡 | 久久中文字幕一区 | 国产一区不卡 | av免费观看网站 | 国产福利在线 | 亚洲欧美日韩中文字幕一区二区三区 | 久久久久久99 | 少妇一区在线观看 |