UdeBasicConfiguration與基礎環境變數

因為 UDE 基於 Spring 開發,除非只使用 UDE-Utils 而且沒有任何客制化需求,否則必須準備 Spring 的 ioc Context。

UdeBasicConfiguration 是一個 spring-javaConfig 類別,是 UDE 環境下必定要引入的基礎設定。 它的主要任務是註冊 PropertyPlaceholderConfigurer (spring) ,以引入環境變數與專案檔案路徑定義。

有兩個properties資源與之相關,分別是 systemProperties 與 hostProperties,其中定義的環境變數值,之後都可以在 spring 的 XML設定檔中用 ${veriable-name} 型式帶入。

如下例,宣告時可把 *.properties 放於 classpath 的資源路徑或外部檔案。

  • 例一:classpath
<bean class="com.iisigroup.ude.configuration.UdeBasicConfiguration">
    <property name="systemProperties" value="classpath:…..properties" />
    <property name="hostProperties" value="classpath:…...properties" />
</bean>
  • 例二:外部檔案
<bean class="com.iisigroup.ude.configuration.UdeBasicConfiguration">
    <property name="systemProperties" value=" file:${BASEDIR}/GLOBAL/projects/projectA.properties " />
    <property name="hostProperties" value=" file:${global.config.path}/host.properties " />
</bean>
  • 例三:JavaConfig
@Configuration
public class RxxReportTestConfiguration extends UdeBasicConfiguration{
    public RxxReportTestConfiguration() throws Exception {
        super.setSystemProperties(new UrlResource("file:${BASEDIR}/GLOBAL/projects/REPORTING-config.properties"));
        super.setHostProperties(new UrlResource("file:${global.config.path}/host.properties"));
    }
}

systemProperties

一般會在此設定檔中定義個別系統所使用的環境變數,否則前一節所定義的「專案檔案路徑」會使用預設值。

主要內容是專案縮寫代碼(system.id)及專案檔案實際路徑。設定時,除專案縮寫代碼(system.id)外,UDE允許各項目使用 ${BASEDIR}、${system.id} 兩項變數定義。

宣告本設定檔資源路徑時,只能使用系統變數設定(如${BASEDIR}),如前述宣告例二,因為預期在本設定檔中才指定專案檔案實際路徑。

UDE中定義的預設項目清單在 UdeSystemPropertyItem 中,若有未宣告的項目時,即使用預設值如下:

system.id=APP
global.config.path=${BASEDIR}/GLOBAL/global_config
global.resource.path=${BASEDIR}/GLOBAL/global_resource
global.data.path=${BASEDIR}/GLOBAL/global_data
config.path=${BASEDIR}/${system.id}/config
resource.path=${BASEDIR}/${system.id}/resource
data.path=${BASEDIR}/${system.id}/data
temp.path=${BASEDIR}/${system.id}/temp
log.path=${BASEDIR}/${system.id}/log

hostProperties

此設定通常是放置多個系統間的共用參數,如主機所在地代碼、程式啟動層級(開發/測試/正式環境)等。

讀取完systemProperties,得到專案檔案實際路徑後,才讀入hostProperties。所以 UdeBasicConfiguration 宣告中的資源檔案路徑,可以使用systemProperties所讀入的環境變數。如果未指定 hostProperties 路徑,UDE會自動試著到${global.config.path}/host.properties讀取內容。

UDE 預設期望讀入的設定值只有一個「ENVIRONMENT」,相關定義可參考「自訂環境層級」一節相關說明。如果輸入設定值無法識別(或檔案不存在),預設的程式啟動層級是正式運作環境(Environment.PRODUCTION)。部分元件可支援於不同的執行環境有不同的運作行為。

``` properties
# DEV / SIT / UAT / PROD
ENVIRONMENT=DEV

    ```

可設定與覆寫項目

  • setServiceAutoStart(boolean)

    預設為 TRUE,見擴充功能元件實作模式。

  • systemConfig()

    見次節「系統資訊定義」:SystemConfig。

  • systemConfigResolver()

    見次節「系統資訊定義」:SystemConfig。

SpringContextUtils 工具元件。

UdeBasicConfiguration 註冊完成後即可使用。需要時,可利用此工具類別由 Spring Context 取得 Spring BEAN 時,。

使用編碼過的外部參數檔

TODO:細節待補充

key1=ENC(eTT36XGZIVNLsCzMNTA9UQ==)
key2=ENC(Aa8tVwLUHApEZuH4F/oYjRhiBdGKMrj7)

XML

<!-- UdeBasicConfiguration extends UdePropertyPlaceholderConfigurer   -->
<!-- 所以標準 UdeBasicConfiguration 也可以加上 pbeConfig/location 參數  -->
<bean id="udeBaseConfig" class="com.iisigroup.ude.system.UdePropertyPlaceholderConfigurer">
 <property name="systemProperties" value="file:${BASEDIR}/config/ude-test-config.properties" />
 <property name="location" value="file:${config.path}/encrypt-values.properties" />
 <property name="pbeConfig" ref="udeStringPBEConfig" />
</bean>
<bean name="udeStringPBEConfig" class="com.iisigroup.ude.util.properties.UdeStringPBEConfig">
 <property name="encEnvName" value="XXX_ENC_KEY" />
</bean>

執行 EncTool 以產出編碼

mvn exec:java -q -Dexec.mainClass=com.iisigroup.ude.util.properties.EncTool -Dexec.args="password encKey" 
((( 主機設定環境變數  XXX_ENC_KEY = encKey )))

註:如開發專案項目會依性質,DEPLOY到不同環境,並且需要使用的不同GLOBAL設定時。也可以在 GLOBAL/ 下切分子目錄,並利用 systemProperties 指定到適用路徑。則本機開發時,就可以同時啟動兩樣不同 SERVER 服務。

results matching ""

    No results matching ""