国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringMVC配置多個properties文件之通配符解析

SpringMVC配置多個properties文件之通配符解析

2021-12-23 13:00朝著希望前進 Java教程

這篇文章主要介紹了SpringMVC配置多個properties文件之通配符解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringMVC配置多個properties文件之通配符

在springmvc中配置加載properties文件一般會在

xml文件中配置如下

<context:property-placeholder location="classpath:resources/properties/zza.properties" 
      ignore-unresolvable="true" /> 

如果希望在項目中添加了一個新的模塊,并且希望新的模塊和之前項目相對獨立,需要新添加一個properties文件的話,那么需要在xml配置文件中,再配置一份。比如:

<context:property-placeholder location="classpath:resources/properties/zza.properties" 
      ignore-unresolvable="true" /> 
      <context:property-placeholder location="classpath:resources/properties/weixin.properties" 
      ignore-unresolvable="true" />

這樣做就太麻煩了,每次添加完properties文件還得在xml文件中添加。并且還必須把ignore-unresolvable屬性設置為true。

解決方案是:利用通配符

具體如下:

  <context:property-placeholder   location="classpath*:resources/properties/*.properties" />

 

多個SpringMVC項目配置統一管理

來自于springCloud的統一配置思路

因公司項目分多個系統進行開發,而系統架構幾乎完全一樣,所以同樣的配置文件會存在不同的系統中

當其中的某些配置需要修改時,就需要依次把所有系統中相關的配置都修改掉

純耗時且沒技術含量的體力活

所以借鑒SpringCloud的統一配置文件管理思想來對公司多個系統的配置文件也進行統一管理

1.首先是properties文件

針對諸如數據庫連接等類似的共通信息,如果數據庫信息發生變更則都需要修改,為了方便者直接在服務器上放置一個默認的連接配置

并發布到IIS等server上,通過http請求能夠獲取到

  SpringMVC配置多個properties文件之通配符解析

然后修改加載資源文件的配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans.xsd">
  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
      <property name="locations">
          <list>
              <value>http://192.168.0.32:82/properties/jdbc.properties</value>
          </list>
      </property>
  </bean>
</beans>

PropertyPlaceholderConfigurer默認是支持http和file方式加載資源的

2.針對各類xml配置文件

項目中除了web.xml外,還有眾多的xml

SpringMVC配置多個properties文件之通配符解析

和propertie文件一樣,也是相同的配置文件存在于不同的項目中,一改就要挨個改,煩

同理,將xml發布,并修改IIS設置,使其通過瀏覽器能訪問

iis需要增加MIME類型 properties和xml為text/plain才能在瀏覽器訪問

SpringMVC配置多個properties文件之通配符解析

然后就可以在瀏覽器訪問了

SpringMVC配置多個properties文件之通配符解析

<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
                  http://192.168.0.32:82/springConfig/applicationContext-resource.xml,
                  http://192.168.0.32:82/springConfig/applicationContext-db.xml,
                  http://192.168.0.32:82/springConfig/applicationContext-redis.xml,
                  http://192.168.0.32:82/springConfig/applicationContext-redission.xml,
                  http://192.168.0.32:82/springConfig/applicationContext-service.xml,
                  http://192.168.0.32:82/springConfig/applicationContext-filter.xml
          </param-value>
  </context-param>
<servlet>
      <description>spring-mvc</description>
      <servlet-name>mvc</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>
              http://192.168.0.32:82/spring-mvc.xml
<!--                 classpath:spring-mvc.xml -->
          </param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
  </servlet>

這樣就可以直接啟動了,啟動時可以查看下面日志信息確定加載內容是正確的

SpringMVC配置多個properties文件之通配符解析

最開始是修改為這樣的

<context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
                  http://192.168.0.32:82/springConfig/applicationContext-*.xml
          </param-value>
  </context-param>

和classpath一樣,但是很遺憾,解析不了統配費,找不到文件

java.io.FileNotFoundException: URL [http://192.168.0.32:82/springConfig/] cannot be resolved to absolute file path because it does not reside in the file system: http://192.168.0.32:82/springConfig/
at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:215)
at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:53)
at org.springframework.core.io.UrlResource.getFile(UrlResource.java:213)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.doFindPathMatchingFileResources(PathMatchingResourcePatternResolver.java:689)
at org.springframework.web.context.support.ServletContextResourcePatternResolver.doFindPathMatchingFileResources(ServletContextResourcePatternResolver.java:92)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(PathMatchingResourcePatternResolver.java:478)
at org.springframework.core.io.support.PathMatchingResourcePatternResolver.getResources(PathMatchingResourcePatternResolver.java:293)

仔細看源碼 加載配置文件的源碼 PathMatchingResourcePatternResolver中這段

@Override
  public Resource[] getResources(String locationPattern) throws IOException {
      Assert.notNull(locationPattern, "Location pattern must not be null");
      if (locationPattern.startsWith(CLASSPATH_ALL_URL_PREFIX)) {
          // a class path resource (multiple resources for same name possible)
          if (getPathMatcher().isPattern(locationPattern.substring(CLASSPATH_ALL_URL_PREFIX.length()))) {
              // a class path resource pattern
              return findPathMatchingResources(locationPattern);
          }
          else {
              // all class path resources with the given name
              return findAllClassPathResources(locationPattern.substring(CLASSPATH_ALL_URL_PREFIX.length()));
          }
      }
      else {
          // Generally only look for a pattern after a prefix here,
          // and on Tomcat only after the "*/" separator for its "war:" protocol.
          int prefixEnd = (locationPattern.startsWith("war:") ? locationPattern.indexOf("*/") + 1 :
                  locationPattern.indexOf(":") + 1);
          if (getPathMatcher().isPattern(locationPattern.substring(prefixEnd))) {
              // a file pattern
              return findPathMatchingResources(locationPattern);
          }
          else {
              // a single resource with the given name
              return new Resource[] {getResourceLoader().getResource(locationPattern)};
          }
      }
  }

思路都很簡單,配置的頭尾解析出目錄和含有通配符的文件,然后依次去找哪些文件滿足

不過很遺憾的是,如果是http開頭的通配符路徑,暫時是不支持的,支持classpth,jar等方式

不過讓人欣慰的是,是可以重寫文件加載方式的,原因很簡單,http目錄知道了,要知道目錄下面有哪些文件還是很簡單的(需要開啟iis的目錄瀏覽),然后取到所有文件后,如果和通配符匹配,則加載

雖然有遠端服務了,但是遠端服務只是一個默認的全局配置,

為了方便本地修改部分參數進行調試,所以在需要的時候,修改部分xml地址為classpath中的,只是在提交代碼的時候不要提交

若的確需要修改,則可以通知有服務器操作權限的人(我們公司比如我 ^_^)進行全局修改

以上僅為個人項目經驗,其實就是把默認的classpath修改為了http,多思考,多總結,多實踐,小改動,大用處。希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://loong.blog.csdn.net/article/details/46777809

延伸 · 閱讀

精彩推薦
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲+变态+欧美+另类+精品 | 91精品国产综合久久久久久丝袜 | 色99在线| 精品一区二区三区视频 | 在线观看av网站永久 | 久久视精品 | 国产一区二区三区视频 | 国内自拍偷拍视频 | 黄色免费在线网站 | 国产99久久久精品视频 | 亚洲欧美另类在线 | 久久综合激情 | 国产精品三级久久久久久电影 | 五月婷婷婷婷 | 国产视频网 | 久久久久久久久久久久久久免费看 | www精品美女久久久tv | 精品欧美一区二区三区久久久 | 午夜伦4480yy私人影院 | 久久久小视频 | 亚洲黄网在线观看 | 久久国产电影 | 成人亚洲 | 欧美区国产区 | 伊人www22综合色 | 欧美国产日韩一区 | 国产中文字幕一区 | 黄a视频 | 不卡二区| 久久久久久亚洲av毛片大全 | 成人亚洲精品 | 精品中文字幕一区 | 欧美在线免费观看 | 久久精品亚洲精品国产欧美kt∨ | 中文字幕在线观看视频地址二 | 国产精品美女久久久久久免费 | 超碰偷拍 | 国产一区二区在线免费观看 | 日韩精品一区二区三区在线观看 | 免费观看爱爱视频 | 久久久久亚洲 |