本人曾供職於一家國內的還算比較大mis系統開發商,工作的主要內容是用一套有預設實現的模板式框架去開發一些業務應用系統。在開發的過程中,開發工作的絕大部分內容是配置和寫展示用的jsp(沒有其他的模板技術)。搞jsp我不在行,於是我就把目標放在了如何減少配置的工作量。這也就是配置繼承模式的**了。到今天算是小有所成,本著請共享和求教的願望,把我的東西貼出來,希望各位je大牛幫忙給點意見,本人不甚感激。
話歸正題,所謂配置繼承呢,準確的應該叫配置資訊繼承,是指從功能對配置資訊的需要出發,按照功能、模組、系統劃分建立對應的樹形配置域,仿照類繼承的方式(系統域是最頂層的父類,功能是最底層的子類)而配置資訊獲取和管理的模式。在配置繼承中,強調功能對配置資訊具有控制權:可新增、覆蓋、刪除配置項;同時配置資訊又是可從父域繼承而來的:共性資訊可以在上級配置以達到共享的目的。除此之外,在其中還加上了以正規表示式為基礎的模式的使用,有點像struts1.2以後的萬用字元的使用。
舉例來說,假設在乙個比較簡單的web系統內有四個功能分別是功能1、功能2、功能3、功能4,其中功能1、功能2是屬於模組a的,功能3、功能4是屬於模組b的,系統資料來源在jndi中的名字是需要配置的,而且系統在現階段只是訪問乙個資料庫例項。我們過去的做法是直接建立乙個全域性共享的配置,裡面寫明資料來源的jndi名。但是世界總是在進步,突然有一天,我們發現乙個資料庫已經滿足不了效能的需要了,需要將一部分功能移植到另外乙個新的資料庫上面去。首先移的是功能4,資料庫的移植和資料的互動先且不說,功能4的程式如何來改呢?我們痛苦的改了一下,湊合著能用了。但是發現移植了功能4的資料訪問後還不能滿足需要,打算也把功能3移植過去,於是我們又受盡了折磨的把功能3**改的湊合能用了。但是突然有一天,我們客戶對硬體做了個大公升級,上了乙個無比niu的資料庫,於是我們又需把所有的功能的資料庫訪問**改到訪問新的資料庫上去,這下我們崩潰了,以前不就是白白折騰了嘛。
如果使用配置繼承來說,我們首先是在系統域上配置好資料來源的名字就可以,通過繼承全系統使用這個資料來源。到需要移植功能4的時候,我們只需要在功能4的配置資訊裡覆蓋預設繼承來的資料來源的名字就可以了。移植完了功能3之後呢,我們只需要在模組b那裡配置使用新的資料來源,把功能4的特殊配置去掉就可以了。如果是完全的移植資料庫,那麼我們只需要將系統域的配置修改,並且去掉了模組b的特殊配置就可以。可以看到,配置繼承是兼顧靈活和共享的一種配置資訊的管理模式,特別使用於各個功能的實現的大部分配置資訊是相同的情況。當然,要使用配置繼承,在功能實現的時候,就需要按照功能去取配置資訊的集合,而不是直接引用全域性配置資訊的集合,這一點和原來的程式設計方式是有很大的區別。
我做了個配置繼承的實現,但是弄了之後個人覺得實現的太糙,而且在實現對spring、struts、hibernate的支援時由於不熟覺得有點摸不著邊,因此特別希望有大牛能給一些指導意見,最好是能有感興趣的朋友跟我一起把他做下去。我把我的實現的**都已經傳到上了,現在主要實現了對xml格式的配置檔案的支援,請大家多多指教。
Spring bean配置繼承
在 spring,繼承是用為支援bean設定乙個 bean 來分享共同的值,屬性或配置。乙個子 bean 或繼承的bean可以繼承其父 bean 的配置,屬性和一些屬性。另外,子 bean 允許覆蓋繼承的值。請參見下面的完整的例子來告訴你如何配置 bean 繼承在 spring 中工作。packag...
Spring bean配置繼承
在spring中,bean配置支援繼承,以使bean共享公共值,屬性或配置。子bean或繼承的bean可以繼承其父bean的配置,屬性和某些屬性。另外,允許子bean覆蓋繼承的值。請參閱以下完整示例,向您展示bean配置繼承如何在spring中工作。package com.mkyong.common...
Spring bean配置繼承
在 spring,繼承是用為支援bean設定乙個 bean 來分享共同的值,屬性或配置。乙個子 bean 或繼承的bean可以繼承其父 bean 的配置,屬性和一些屬性。另外,子 bean 允許覆蓋繼承的值。請參見下面的完整的例子來告訴你如何配置 bean 繼承在 spring 中工作。packag...