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

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

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

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

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

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

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

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

@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;
}

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

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

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

相關(guān)文章

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

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

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

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

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

    Java的main方法使用及說明

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

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

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

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

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

    java虛擬線程的超詳細講解

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

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

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

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

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

    Java內(nèi)存分布歸納整理詳解

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

    Arthas-java程序運行時debug工具使用

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

最新評論

黄浦区| 永清县| 鄢陵县| 长治市| 龙海市| 莲花县| 鄢陵县| 江阴市| 阿拉善左旗| 红河县| 怀来县| 九龙城区| 高唐县| 连城县| 股票| 孟连| 田阳县| 陆河县| 响水县| 房产| 贵德县| 仙桃市| 南阳市| 吐鲁番市| 洞口县| 深水埗区| 荥经县| 新昌县| 墨玉县| 黄梅县| 射洪县| 敖汉旗| 尉氏县| 吉隆县| 如皋市| 蕲春县| 大方县| 鸡西市| 乐清市| 尉氏县| 永州市|