精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Spring MVC框架的高級配置(下)

開發(fā) 后端
本文介紹Spring MVC框架的高級配置,包括介紹配置時遇到的問題以及問題解決方法。

上文介紹Spring MVC框架配置時遇到的問題,以下是解決方案。


解決方案

同步Bean屬性

這個問題的一種可行的解決方案是將所有特定于主機的參數都放到普通的Java屬性文件中,使用Spring的PropertyPlaceHolderConfigurer類,將這些參數寫入Bean屬性中。

使用這一解決方案,我們可以生成如下的屬性文件(/Web-INF/JDBC.properties):

  1. jdbc.driver=org.postgresql.Driver  
  2. jdbcjdbc.url=jdbc:postgresql://localhost/test  
  3. jdbc.user=postgres 
  4. jdbc.password

我們的Bean配置如下:

  1. <bean id="propertyConfigurer" 
  2. class="org.springFramework.beans.factory.config.PropertyPlaceholderConfigurer"> 
  3.     <property name="location"> 
  4.        <value>/WEB-INF/jdbc.properties</value> 
  5.     </property> 
  6. </bean> 
  7. <bean id="dataSource" 
  8. class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
  9.     <property name="driverClassName"> 
  10.          <value>${jdbc.driver}</value> 
  11.     </property> 
  12.     <property name="url"> 
  13.          <value>${jdbc.url}</value> 
  14.     </property> 
  15.     <property name="username"> 
  16.          <value>${jdbc.user}</value> 
  17.     </property> 
  18.     <property name="password"> 
  19.          <value>${jdbc.password}</value> 
  20.     </property> 
  21. </bean> 

如上所述,我們定義了一個PropertyPlaceholderConfigurer類的實例,并將其位置屬性設置為我們的屬性文件。該類被實現為Bean工廠的后處理器,并將使用定義在文件中的屬性來代替所有的占位符(${...}value)。

利用這種技術,我們可以從applicationContext.XML中移除所有特定于主機的配置屬性。通過這種方式,我們可以自由地為該文件添加新的Bean,而不必擔心特定于主機屬性的同步性。這樣可以簡化生產部署和維護。

同步性連接

上面的技術解決了***個問題,可是如果您計劃修改不同應用程序部署之間的Bean連接,這一技術便不很適合。針對這一問題的一個解決方案便是額外創(chuàng)建一個名為applicationContext-[hostname].xml 的XML定義文件。其中[hostname]是部署應用程序的主機的名稱。例如,在本地的機器上,這個文件通常名為 applicationContext-localhost.xml,而在部署時,它可能更名為applicationContext- somehost.com.xml。

可以猜測,這一文件必須包括特定于某一主機的所有配置Bean。在本文中,我們將假設dataSource bean定義將位于這類文件中,而不是通用的applicationContext.xml定義。當然,這種機制與前者并非沖突,但是為了更加簡單明了,我們將只關注這種方法。

既然我們已經有了特定的配置,下面我們就來討論一下如何將其整合到整個Spring MVC框架配置概念中。要達到這一目的,可以有許多方法,我們將詳細地一一說明。但首先,我們應該注意到,由于有些Bean可能位于獨立的配置文件中,因此在 applicationContext.xml中,所有對它們的局部引用都必須更換成全局名稱。

例如,如下引用:

  1. <property name="someProperty"> 
  2.    <ref local="someBean"/> 
  3. </property> 

應更改為:

  1. <property name="someProperty">  
  2. <ref bean="someBean"/> 
  3. </property> 

在這之后,我們有很多可以添加額外的資源以用于配置的方式。其中最明顯的就是使用<import>標簽將這一額外資源包含在 applicationContext.xml配置文件中。使用時,要將該標簽放在applicationContext.xml文件開頭。例如:

  1. <import resource="applicationContext-somehost.com.xml"/> 

現在,在獨立的XML定義文件和普通的應用程序上下文定義文件中的所有通用Bean定義都有了特定于主機的連接。由于大多數的Bean都不是特定于主機的,因此我們可以像處理Web應用程序中的其他資源一樣自由地處理applicationContext.xml文件,并可以通過合適的版本控制系統(tǒng)與其進行同步。

但是,上述方法也有一定的弊端。如果您想保留不同XML文件的不同配置,就仍然必須擔心applicationContext.xml的同步性,因為資源的名稱必須根據不同服務器進行更改。雖然與原有的解決方案相比有了很大提高,只需更改文件名,但是這還是需要開發(fā)人員的手動協助。

由于與applicationContext.xml相比,主機配置不需如此頻繁地進行更改,因此下一步便是將主機配置移動到web.xml文件中(如果可能的話)。幸運的是,我們有一個可用的解決方案。看一下下面關于web.xml配置的片斷:

  1. <listener>    
  2. <listener-class>  org.springFramework.web.context.ContextLoaderListener    
  3. </listener-class>    
  4. </listener>    
  5. <context-param>    
  6. <param-name>contextConfigLocation  
  7. </param-name>    
  8. <param-value>  /WEB-INF/applicationContext.xml /WEB-INF/                                                        applicationContext-somehost.com.xml    
  9. </param-value>    
  10. </context-param> 

正如您所看到的,除了web.xml文件中常有的ContextLoaderListener之外,我們還添加了 contextConfigLocation上下文參數配置。這一參數用于指示框架查找這些配置文件的位置。如果這一參數被省略,則Spring就只能到 applicationContext.xml中查找。這里我們也定義了特定于主機的配置文件來使用。

利用這種方法,我們將所有特定于主機的配置從applicationContext.xml文件中移除,這樣便減輕了其在不同應用程序部署中的同步性。

如果這種方法成為您的新習慣,您還可以使其更加靈活。通過遵守下列指令,也可以將特定于主機的配置從web.xml文件中移除。

為此,需要創(chuàng)建特定于我們的應用程序上下文的類:

  1. package net.nighttale.spring.util;  
  2. import Java.net.InetAddress;  
  3. import org.springframework.web.context.support.XmlWebApplicationContext;  
  4. public class PerHostXmlWebApplicationContext  
  5. extends XmlWebApplicationContext ...{  
  6.     protected String[] getDefaultConfigLocations() ...{  
  7.             String hostname = "localhost";  
  8.             try ...{  
  9.                 hostname = InetAddress.getLocalHost().getHostName();  
  10.             } catch (Exception e) ...{  
  11.             }  
  12.             String perHostConfiguration = DEFAULT_CONFIG_LOCATION_PREFIX 
  13.                  + "applicationContext-"  
  14.                  + hostname  
  15.                  + DEFAULT_CONFIG_LOCATION_SUFFIX  
  16.                  ;  
  17.             logger.debug(  
  18.                  "Adding per host configuration file: "  
  19.                  + perHostConfiguration  
  20.                  );  
  21.             if (getNamespace() != null) ...{  
  22.                     return new String[] ...{  
  23.               DEFAULT_CONFIG_LOCATION_PREFIX  
  24.                 + getNamespace()  
  25.                 + DEFAULT_CONFIG_LOCATION_SUFFIX  
  26.              , perHostConfiguration};  
  27.             }  
  28.             else ...{  
  29.                     return new String[] ...{  
  30.              DEFAULT_CONFIG_LOCATION  
  31.               , perHostConfiguration};  
  32.             }  
  33.     }  

這個類拓展了Spring中常被作為默認值使用的XmlWebApplicationContext。 XmlWebApplicationContext類將Web應用程序的配置從XML定義文件中復制過來。默認情況下,它可以配置來自 applicationContext.xml和[Servlet-name]-servlet.xml文件中的應用程序。這個類執(zhí)行的惟一一項額外任務便是獲取它所在的主機名稱,并將applicationContext-[hostname].xml文件添加到配置文件列表中。

為了使用這個類,我們需要對其進行編譯,將其包含在類途徑中,并指示Spring框架使用它。前兩步非常簡單,我們就不在此贅述。我們可以指示Sping通過contextClass上下文參數來使用它。除了web.xml文件中的原有配置,我們還可以添加下列內容:

  1. <context-param> 
  2.   <param-name>contextClass</param-name> 
  3.   <param-value>  net.nighttale.spring.util.PerHostXmlWebApplicationContext  
  4.   </param-value> 
  5. </context-param> 

如果我們使用這一配置片斷,將會有三個文件被用于初始化這個框架:[servlet-name]-servlet.xml、applicationContext-[hostname].xml以及applicationContext.xml。

正如您所看到的,applicationContext.xml和web.xml文件已經完全擺脫了任何特定的配置細節(jié),而且您也不必擔心會在更新應用程序時破壞配置。

但是,這種方法有一個不足之處。因為,不論是否會使用,都需要在應用程序部署中有第三個配置文件。在這種情況下,便不需要特定于主機的配置。例如:

  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"                            "http://www.springframework.org/dtd/spring-beans.dtd"> 
  3. <beans> 
  4. </beans> 

***,需要知道應用程序上下文類需要查找的特定主機名。檢查主機名稱的最簡單的方法是在機器上運行下列代碼:

  1. System.out.println(InetAddress.getLocalHost().getHostName()); 

可以將其作為Java代碼執(zhí)行,也可在喜歡使用的腳本語言(如BeanShell或Groovy)中作為一個具有Java風格語法的腳本執(zhí)行。在獲取了主機的名稱之后,應該創(chuàng)建一個默認的/WEB-INF/applicationContext-[hostname].xml空文件夾(如我們上面所定義的),然后便可以開始了。

結束語

在本文中,我們提供了一系列的配置技巧,讓您在使用Spring MVC框架完成日常工作的時候更加輕松。如果您希望知道如何維護各種Web應用程序部署,可以試著找出最適合您的開發(fā)過程的解決方案。您的生活會更為輕松。

【編輯推薦】

  1. Spring Batch 2.0的新特性
  2. 簡單介紹Spring osgi
  3. Spring OSGi的整合
  4. 在Spring中配置Glassfish JPA
  5. 解決Spring2.0向spring2.5遷移的問題
責任編輯:佚名 來源: IT168
相關推薦

2009-06-19 11:28:45

2009-06-24 16:01:28

Spring MVC

2019-08-15 10:56:10

WebServletSpring mvc

2009-06-18 11:37:16

配置spring

2022-04-30 08:43:52

Spring模塊化框架

2009-01-03 14:39:04

ibmdwDojoMVC

2009-03-13 10:58:48

ASP.NetMVC框架編程

2009-06-19 17:05:08

MVC框架Struts和Spri

2022-05-30 11:17:44

Spring容器配置

2010-01-08 12:03:42

ibmdwREST

2012-10-22 16:55:48

JavaMVC

2011-02-24 15:11:00

MVC框架

2011-12-05 13:44:34

JavaSpringMVC

2013-03-21 13:56:21

JavaScriptBackBone

2009-02-02 09:08:38

MVC框架控制器CakePHP

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-02-02 09:04:52

MVC框架Java

2009-04-24 09:43:09

.NETASP.NET框架

2017-11-23 17:21:31

Yii框架IntelYii框架深度剖析

2011-03-02 13:23:42

Vsftpd配置
點贊
收藏

51CTO技術棧公眾號

日韩av一卡二卡三卡| 日韩久久在线| 国产精品suv一区二区69| 国产色噜噜噜91在线精品| 欧美日韩国产黄| 午夜精品美女久久久久av福利 | 精品国产91久久久久久老师| 日本精品一区二区| 精品国自产在线观看| 免费日韩av片| 久久精品久久久久电影| 国产麻豆xxxvideo实拍| 欧美视频免费看| 五月综合激情婷婷六月色窝| 综合视频免费看| 欧美3p视频在线观看| 国产一区久久久| 欧美激情一级精品国产| 国产精品20p| 国产精品chinese在线观看| 精品视频一区 二区 三区| 777av视频| 成人av福利| 国产日韩亚洲欧美综合| 国产伦精品一区| 国产免费无遮挡| 日韩不卡手机在线v区| 国内精品久久久久| 一区二区成人免费视频| 国产一区三区在线播放| 亚洲国产三级网| 18深夜在线观看免费视频| 激情久久99| 在线亚洲+欧美+日本专区| 欧洲精品一区二区三区久久| 在线看福利影| 日韩美女啊v在线免费观看| 日本精品免费| 国产精品毛片一区二区三区四区| aaa亚洲精品一二三区| 99久久国产免费免费| 国产精品国产三级国产普通话对白| 日韩1区2区3区| 国产成人精品久久二区二区| 69成人免费视频| 99国产精品| 97超级碰碰碰| 国产 日韩 欧美 在线| 在线精品亚洲| 91黄色8090| 国产欧美日韩另类| 亚洲专区一区二区三区| 日韩av电影国产| 亚洲欧美偷拍视频| 久久裸体视频| 国产精品精品视频一区二区三区| 波多野结衣在线观看一区| 乱码第一页成人| 国产精品户外野外| 中文字幕视频一区二区| 美女视频黄免费的久久| 91精品久久久久久久久久| 一级黄色片在线看| 国产美女久久久久| 鬼打鬼之黄金道士1992林正英| 二区三区在线视频| 97久久久精品综合88久久| 久久综合给合久久狠狠色| 毛片在线播放网址| 国产精品色在线| 色乱码一区二区三区熟女| 在线观看中文字幕的网站| 亚洲资源在线观看| 黑人糟蹋人妻hd中文字幕| 成人啊v在线| 在线不卡一区二区| 不许穿内裤随时挨c调教h苏绵 | 中国毛片直接看| 欧美日韩免费观看一区=区三区| 久久久久久国产三级电影| www成人在线| 久久草av在线| 国产精品9999久久久久仙踪林| 五月婷婷六月色| 亚洲国产精品黑人久久久| 中文字幕日韩精品无码内射| 超碰在线cao| 欧美三日本三级三级在线播放| 五月天婷婷影视| 国产香蕉精品| 在线午夜精品自拍| 免费在线视频一区二区| 国产精品一级| 成人激情视频在线播放| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 久久只精品国产| 少妇熟女一区二区| 九色porny自拍视频在线播放| 欧亚洲嫩模精品一区三区| 老女人性生活视频| 久久91精品| 久久久久久尹人网香蕉| 中文字幕人妻丝袜乱一区三区| 成人午夜大片免费观看| 色涩成人影视在线播放| 啊啊啊久久久| 欧美日韩中文精品| 30一40一50老女人毛片| 91国语精品自产拍| 国产成人综合亚洲| 免费a级片在线观看| 中文字幕一区av| 亚洲精品无码久久久久久| 精品视频一二| 中文字幕成人在线| 一级免费在线观看| 国产成人高清在线| 正义之心1992免费观看全集完整版| av在线中出| 日韩一区二区三区视频| 国产美女永久免费无遮挡| 狠色狠色综合久久| 91视频国产精品| 91社区在线观看播放| 精品久久久久久亚洲精品| 四川一级毛毛片| 久久中文视频| 国产精品欧美亚洲777777| 四虎精品成人影院观看地址| 一区二区三区四区在线| 日本高清一区二区视频| 欧美一区二区性| 日本高清视频一区| 亚洲人在线观看视频| 亚洲国产成人porn| 亚洲欧美激情一区二区三区| 五月天久久久| 国产在线精品播放| 丝袜美腿美女被狂躁在线观看| 一本一道久久a久久精品| 老熟妇精品一区二区三区| 狠狠综合久久| 国产一区二区视频在线免费观看| 七七久久电影网| 91精品国产福利| 1024手机在线视频| 国产精品一区二区三区99| 亚洲色图都市激情| 深夜激情久久| 国内揄拍国内精品| 老牛影视av牛牛影视av| 亚洲成在人线在线播放| 国产精品久久久久久在线观看| 国产精品s色| 国产精品久久国产精品| 波多野结衣中文字幕久久| 亚洲国产精品一区二区三区| 久久露脸国语精品国产91| 99精品在线免费| 国产二区视频在线播放| 美女毛片一区二区三区四区| 国产国语刺激对白av不卡| 黄色在线观看网| 精品视频一区 二区 三区| 国产极品美女在线| 国产成人一区在线| 缅甸午夜性猛交xxxx| 亚洲人成亚洲精品| 国产精品爽黄69天堂a| 国产视频中文字幕在线观看| 日韩免费在线观看| 在线观看精品国产| 国产日本亚洲高清| 亚洲一二三av| 亚洲黄色在线| 日韩午夜视频在线观看| 9999精品免费视频| 国内外成人免费激情在线视频网站| 日本大臀精品| 678五月天丁香亚洲综合网| 久久综合激情网| 国产亚洲欧美一级| 特黄特黄一级片| 亚洲制服av| 99re99热| 欧美猛男男男激情videos| 91精品国产综合久久香蕉922| 91福利在线免费| 中文字幕在线亚洲| 亚洲欧美另类综合| 欧美中文一区二区三区| 久久久久久久久久久久国产| 久久久久久电影| 1314成人网| 日本成人超碰在线观看| 亚洲天堂第一区| 国产尤物久久久| 肥熟一91porny丨九色丨| 日韩性xxx| 欧美激情一二三| 午夜毛片在线| 精品中文字幕久久久久久| 国产一区二区在线视频聊天 | 久热精品视频在线免费观看| 亚洲色图欧美视频| 欧美一区二区美女| 亚洲精品一区二三区| 亚洲一级片在线观看| 国产农村妇女精品一区| 91女神在线视频| 日本中文字幕有码| 久久精品国产77777蜜臀| 男女高潮又爽又黄又无遮挡| 欧美精品一卡| 日韩欧美亚洲日产国| 国产精品香蕉| 91九色蝌蚪成人| 亚洲精品一区二区在线播放∴| 欧美夜福利tv在线| 久草在线资源站资源站| 久久韩国免费视频| av电影在线观看| 国产亚洲一区精品| 九一国产在线| 精品一区二区三区三区| 黄色av小说在线观看| 日韩亚洲欧美一区二区三区| 91精品国产综合久| 欧美日韩专区在线| 国产一级淫片a视频免费观看| 亚洲va天堂va国产va久| 青青操视频在线播放| 亚洲色图.com| 中日韩一级黄色片| 国产精品短视频| 中文字幕91视频| 日本一区二区高清| 国产成人一区二区在线观看| 久久天堂av综合合色蜜桃网| 中文字幕 亚洲一区| 成人激情免费电影网址| 911亚洲精选| 国产jizzjizz一区二区| 能看毛片的网站| 高清在线不卡av| av天堂一区二区| 成人精品免费看| 国产精品成人99一区无码| 成人一区二区在线观看| 最新版天堂资源在线| 成人av电影在线网| 亚洲第一黄色网址| 久久综合色播五月| 久久久久久久毛片| 国产精品久久久久久久久搜平片| 呻吟揉丰满对白91乃国产区| 中文字幕一区免费在线观看| 亚洲熟女毛茸茸| 一区二区在线观看不卡| 日本一级淫片免费放| 欧美日韩中文在线观看| 精品国产乱子伦| 欧美手机在线视频| 国产高清免费观看| 亚洲精品97久久| 国产三级电影在线| 日韩一区二区三区xxxx| 亚洲色图美国十次| 97高清免费视频| 欧美成人免费电影| 国产精品综合久久久| 日韩区一区二| 开心色怡人综合网站| 日韩欧美电影| 欧美中日韩在线| 久久久久久夜| 999久久久精品视频| 成人一级片在线观看| 亚洲天堂视频一区| 亚洲欧美日韩在线| 激情五月色婷婷| 欧美色综合网站| 亚洲欧美另类一区| 在线观看中文字幕亚洲| 欧美6一10sex性hd| 国产精品h片在线播放| 国产麻豆精品| 欧美日韩中文国产一区发布| 91精品福利| 狠狠热免费视频| 国产精品18久久久久久久久 | 亚洲三级黄色片| www.99久久热国产日韩欧美.com| 欧美午夜大胆人体| 国产精品草莓在线免费观看 | 亚洲国产精品999| h网站在线免费观看| 色综合色综合网色综合| 国产超碰精品| 国产精品久久久久久免费观看| 精品国精品国产自在久国产应用 | 国产精品女主播一区二区三区| 牛夜精品久久久久久久| av电影在线观看一区| 久久久久久久久久97| 欧美性xxxxx极品娇小| 99久久精品国产色欲| 一本一道久久a久久精品逆3p | 午夜影院久久久| 一卡二卡三卡在线观看| 亚洲精品视频播放| 蜜乳av一区| 91沈先生在线观看| 日韩在线综合| 日本老熟妇毛茸茸| 91婷婷韩国欧美一区二区| 欧美卡一卡二卡三| 欧美日韩久久一区二区| 蜜桃视频在线观看网站| 亚洲91精品在线| 国产日韩三级| 日本一区午夜艳熟免费| 国产乱码精品1区2区3区| 亚洲色图100p| 日本韩国欧美一区二区三区| 天天摸夜夜添狠狠添婷婷| 欧美精品国产精品日韩精品| 成人亚洲精品| 国产精品夜夜夜爽张柏芝| 日本 国产 欧美色综合| 免费看裸体网站| 一本一本久久a久久精品综合麻豆| 免费国产精品视频| 久久青草福利网站| 国产精品国产| 国产无限制自拍| 99视频有精品| 日韩成人av毛片| 亚洲高清久久久久久| 免费在线中文字幕| 国产精品欧美久久| 亚洲第一毛片| 中国xxxx性xxxx产国| 亚洲第一综合色| 天堂在线观看av| 57pao成人永久免费视频| 日韩av三区| 黄色高清无遮挡| 国产色婷婷亚洲99精品小说| 亚洲中文字幕无码爆乳av| 国产亚洲激情在线| 91国拍精品国产粉嫩亚洲一区| 日韩av图片| 捆绑调教美女网站视频一区| 97在线观看视频免费| 日韩视频永久免费| 久草在线新免费首页资源站| 国产精品久久久久久久久久直播 | 午夜精品久久久久影视| 色丁香婷婷综合久久| 欧美一级片免费在线| 国产精品一线天粉嫩av| 亚洲老女人av| 一区二区三区在线免费视频| 日本成人动漫在线观看| 情事1991在线| 欧美激情成人| 午夜福利三级理论电影| 欧美日韩中文在线| 日本高清中文字幕在线| 99在线国产| 性欧美videos另类喷潮| 亚洲色图100p| 亚洲福利视频久久| 色尼玛亚洲综合影院| 一级黄色免费在线观看| 粉嫩久久99精品久久久久久夜| 亚洲伊人成人网| 精品国内产的精品视频在线观看| 91蜜桃臀久久一区二区| 久久久精品在线视频| 中文字幕人成不卡一区| 天堂在线中文网| 国产欧美日韩精品专区| 欧美三级网页| 国产又大又粗又爽的毛片| 欧美tickling挠脚心丨vk| av大片免费观看| 亚洲人成电影在线观看天堂色| 成人国产精品久久| 97成人在线免费视频| 国产精品久久综合| 欧日韩在线视频| 国产欧美中文字幕| 亚洲免费精品| 三级av在线免费观看| 亚洲国产97在线精品一区| 国产一区二区三区影视| 日韩欧美视频免费在线观看| 中文字幕不卡的av|