最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring boot 實(shí)現(xiàn)配置多個(gè)DispatcherServlet最簡單方式

 更新時(shí)間:2021年01月22日 10:23:46   作者:小威架構(gòu)  
這篇文章主要介紹了spring boot 實(shí)現(xiàn)配置多個(gè)DispatcherServlet最簡單方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

傳統(tǒng)的web項(xiàng)目,只需要在web.xml里配置多個(gè)即可,并且支持多個(gè)url-pattern

在spring boot中,我們默認(rèn)無需配置,系統(tǒng)會自動(dòng)裝配一個(gè),感興趣的可以看下源碼

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

里面有個(gè) DispatcherServletRegistrationBean,關(guān)鍵是這里只能指定一個(gè)path,如下的源碼截圖

如果想要指定多個(gè),我們只能自己寫DispatcherServletRegistrationBean這個(gè)Bean了,那么系統(tǒng)就不會實(shí)例化內(nèi)置的那個(gè)了,如下代碼

@Autowired

private WebMvcProperties webMvcProperties;
@Autowired
private 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;
}

這樣我們參考底層源碼,我們做了三個(gè)Bean,注意有一個(gè)一定要加上@Primary注解,否則啟動(dòng)會有報(bào)錯(cuò)。

如果我們系統(tǒng)有一個(gè)接口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;
 }

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • Maven配置倉庫、阿里云鏡像、環(huán)境變量(史上最全)

    Maven配置倉庫、阿里云鏡像、環(huán)境變量(史上最全)

    本文主要介紹了Maven配置倉庫、阿里云鏡像、環(huán)境變量,文中通過圖文示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Java刷題之最小k個(gè)數(shù)的思路及具體實(shí)現(xiàn)

    Java刷題之最小k個(gè)數(shù)的思路及具體實(shí)現(xiàn)

    這篇文章主要介紹了Java刷題之最小k個(gè)數(shù)的思路及具體實(shí)現(xiàn),最小K個(gè)數(shù)是一個(gè)經(jīng)典的top-K問題,可以通過整體排序、建立小根堆或大根堆的方式解決,排序方式時(shí)間復(fù)雜度較高,適合數(shù)據(jù)量小的場景,小根堆適合k較小的情況,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Java的main方法使用及說明

    Java的main方法使用及說明

    這篇文章主要介紹了Java的main方法使用及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java Swing中JList選擇事件監(jiān)聽器ListSelectionListener用法示例

    Java Swing中JList選擇事件監(jiān)聽器ListSelectionListener用法示例

    這篇文章主要介紹了Java Swing中JList選擇事件監(jiān)聽器ListSelectionListener用法,結(jié)合具體實(shí)例形式分析了中JList選擇事件監(jiān)聽器ListSelectionListener的功能、使用方法及相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-11-11
  • 淺析SpringBoot整合Mybatis如何實(shí)現(xiàn)二級緩存

    淺析SpringBoot整合Mybatis如何實(shí)現(xiàn)二級緩存

    二級緩存,是指多個(gè)Sqlsession之間共享數(shù)據(jù),但是也可以使用Redis這樣的緩存作為存儲點(diǎn),但是不支持mybatisplus 里的方法,本文我們就來聊聊SpringBoot整合Mybatis實(shí)現(xiàn)二級緩存的相關(guān)方法吧
    2025-05-05
  • java虛擬線程的超詳細(xì)講解

    java虛擬線程的超詳細(xì)講解

    虛擬線程是由Java運(yùn)行時(shí)而不是操作系統(tǒng)實(shí)現(xiàn)的Java線程,和傳統(tǒng)線程(或稱之為平臺線程)之間的主要區(qū)別在于,我們可以很容易地在同一個(gè)Java進(jìn)程中運(yùn)行大量活動(dòng)的虛擬線程,甚至數(shù)百萬個(gè),這篇文章主要介紹了java虛擬線程的相關(guān)資料,需要的朋友可以參考下
    2025-10-10
  • 一篇文章讓你徹底學(xué)會Java之exists()方法

    一篇文章讓你徹底學(xué)會Java之exists()方法

    Java中File.exists()方法用于檢查文件或目錄是否存在,是文件操作的前置檢查工具,這篇文章主要介紹了Java之exists()方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-07-07
  • mybatis接收以逗號分隔的字符串批量查詢方式

    mybatis接收以逗號分隔的字符串批量查詢方式

    這篇文章主要介紹了mybatis接收以逗號分隔的字符串批量查詢方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java內(nèi)存分布?xì)w納整理詳解

    Java內(nèi)存分布?xì)w納整理詳解

    這篇文章主要介紹了java程序運(yùn)行時(shí)內(nèi)存分布詳解,需要的朋友可以參考下
    2017-04-04
  • Arthas-java程序運(yùn)行時(shí)debug工具使用

    Arthas-java程序運(yùn)行時(shí)debug工具使用

    這篇文章主要介紹了Arthas-java程序運(yùn)行時(shí)debug工具使用,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11

最新評論

宽城| 威宁| 永安市| 崇文区| 宁南县| 潜江市| 哈尔滨市| 普宁市| 嘉峪关市| 保靖县| 台南市| 莱州市| 伊宁市| 晋城| 长泰县| 金阳县| 合阳县| 西丰县| 桦川县| 东安县| 拜城县| 铜川市| 保德县| 二连浩特市| 永福县| 三门峡市| 巴南区| 遂昌县| 铁岭县| 九龙城区| 申扎县| 厦门市| 海伦市| 铜梁县| 淮北市| 永靖县| 黑河市| 三都| 垦利县| 印江| 徐州市|