歡迎您光臨本站 註冊首頁

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

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

  Spring配置

  人們經常會在一台以上的主機上配置一種Web應用程序.例如,在生產中,一個網站可能只有一個實例.除了此實例外,開發人員可以在用於開發的機器上配置其他的(開發)實例.也可以在公司(機構)內部的本地開發伺服器上維護其他應用程序裝置,這將讓您受益匪淺.該實例的目的是使Web設計者可以獲得有質量保證的材料,並為需要為應用程序提供文件資料的人提供准入.

  大家都知道,即使是最簡單的場景,也需要安裝、配置和維護三個實例.而對於位於不同地理位置的團隊來說,要從事這樣的項目便更加困難.對於任何不是特別簡單的Web應用程序項目,都需要多名開發人員來安裝項目裝置和本地設置以及運行單元測試的裝置等.

  很多組織都將自己開發的產品作為Web應用程序.我們可以在很多產品中發現這種情況,例如電子商務系統、內容管理系統(CMS),以及博客發布平台等.這類產品可在多個伺服器中進行部署.對於成功的多用途Web應用程序來說,他們的開發人員必須要保證他們的應用程序便於安裝,並且能夠與其他 Web應用程序完美集成.經過上述討論之後,我們應該明了,作為本文主題的應用程序配置是通用Web應用程序項目開發人員所需要解決的重要問題之一.

  諸如CVS或Subversion之類的版本控制系統是開發組織使用的一種標準工具.這種工具代表了一些組織的中心源代碼版本庫,它們被用於保持源代碼的有序.用戶可以跟蹤應用程序源代碼的變化,顯示不同版本的區別,並可以確定項目分支.,它們是的在應用程序部署中進行部分更新成為可能.

  很明顯,版本控制系統軟體是跟蹤源代碼所必需的,它對於解決應用程序配置問題有非常大的幫助.在本文中,我們將不會把重點放在版本控制系統上,這方面已經有很多相關的材料了.在此,我們將關注版本控制問題中的一個小話題:如何使Web應用程序的配置更加便捷(尤其是使用Spring MVC框架編寫的Web應用程序).

  問題是:我們在此討論的是一種什麼樣的配置?任何Web應用程序都需要一些資源,這些資源通常都是其所運行的伺服器所特有的,例如資料庫URL、發送電子郵件的SMTP伺服器,以及包含專用軟體文件的文件夾等.這樣的設置應該集中,從而使應用程序配置更加簡單.

  但是,這只是這個問題最簡單的一種版本.有時候,在應用程序開發中需要更加複雜的配置.這意味著,必須將各次部署中的不同Bean連接起來,而這會使問題更加複雜.

  這些應用程序配置問題的解決方案有諸多優勢,包括:簡化應用程序的安裝和配置過程,使源代碼版本控制更加簡便,減少源代碼版本庫中的衝突現象.下面,我們將通過示例詳細討論這個話題.

  問題

  我們來演示一下上文所提到的最簡單的版本.在這一場景中,我們希望在應用程序部署中改變的是簡單的配置參數,例如鏈接、密碼等.如果您曾經使用Spring MVC框架開發過Web應用程序,那麼您應該知道這裡將用到的兩個配置文件:

  ◆/WEB-INF/applicationContext.XML,它讓您可以配置Bean,或者顯示應用程序上下文.通過這個文件,您可以定義自己的業務邏輯Bean、資源以及其他可以與Web埠相關聯的所有Bean.

  ◆/WEB- INF/[Servlet-name]-servlet.xml,它被用於配置Web層、視圖解析器、控制器、校驗器以及其他所有MVC框架中必需的 Bean.[servlet-name]指的是在web.xml部署描述符中定義的Spring dispatcher servlet的名稱.

  那麼問題在哪兒呢?問題就出在applicationContext.xml中將包括一些特定於主機的Bean定義.其中,最明顯的一個示例就是包含了JDBC連接信息的bean,但是任何一種稍微複雜些的應用程序都有十幾個類似的Bean.看一下下面的示例:


<bean id="dataSource" class="org.springFramework.jdbc. datasource.DriverManagerDataSource">
<property name="driverClassName"> <value>org.postgresql.Drivervalue>
property>
<property name="url">
<value>jdbc:postgresql://localhost/testvalue>
property>
<property name="username">
<value>postgresvalue>
property>
<property name="password">
<value>value>
property>
bean>

  這個解決方案的問題在於對applicationContext.xml文件的維護.對於初學者來說,設想一下,項目放在源代碼版本控制系統中,例如CVS.下面,假設您希望在網站中添加新的功能,那麼就需要在應用程序上下文定義中添加額外的Bean定義.問題是如何在生產伺服器上體現這些改變.

  通常情況下,應用程序的本地實例不會與活動站點使用同樣的資料庫,因此applicationContext.xml文件將包括讓您能夠訪問本地資料庫的設置.當您想提交在源代碼版本庫中的改變時,就需要注意這些特定於主機屬性的同步性.版本庫中的文件最終可能使用本地設置中的配置.如果想在生產伺服器上更新配置,就必須手動同步這些屬性的值.這是非常枯燥的任務,還非常容易出錯.

  對於應用程序的每個實例來說,這個問題更加重要.假如有三位開發人員正在使用代碼段基址,他們使用的是本地的資料庫.當您提交更改的時候,他們每個人在本地伺服器上更新源代碼的時候都必須非常謹慎.他們會手動同步這些更改,然後提交他們的工作.這樣一來,版本控制系統對於這些配置文件來說已經毫無用處.如果曾經使用過Spring MVC框架,那麼您應該知道applicationContext.xml是應用程序中的關鍵組件,是它將所有的東西粘合在一起.,我們需要一種機制來幫助使應用程序中各項保持有序,這點非常重要.

  正如前面所提到的,這是您可能遇到的較簡單的配置問題.更難的問題出現在當需要在不同伺服器中進行不同的Bean連接的時候.這類問題常會出現在日常軟體開發任務中.例如,假如您的產品有一個客戶身份驗證模塊,可以對來自關係資料庫或LDAP伺服器中的用戶進行身份驗證.自然,這一身份驗證模塊可以使用抽象了特定版本庫的Bean進行配置.如果您想改變不同應用程序部署中驗證用戶的方式,就需要在applicationContext.xml文件中進行不同的Bean連接.這種配置問題常見於在部署中有可配置特性的所有應用程序.

  在下文中,我們將討論這兩種配置問題.我們會關注同步的Bean屬性問題及其解決方案,接下來,我們會討論更加複雜的同步Bean連接問題.


[火星人 ] Spring MVC框架的高級配置(上)已經有563次圍觀

http://coctec.com/docs/java/show-post-61030.html