2014-04-15 78 views
1

我在彈簧應用程序中訪問外部屬性文件,如下所示。該文件包含敏感數據 - 應用程序需要的一些解密密鑰。加載後屬性文件不存在時使用外部屬性文件的屬性

<context:property-placeholder location="file:${JBOSS_HOME}/123.properties,classpath:constants.properties" ignore-resource-not-found="true"/> 

<bean id="helloWorldBean" 
    class="com.javacodegeeks.snippets.enterprise.services.HelloWorld"> 
    <property name="key1" value="${key1}" /> 
    <property name="key2" value="${key2}" /> 
    <property name="key3" value="${key3}" /> 
</bean> 

一旦應用程序啓動,屬性文件將被外部服務刪除出於安全目的。

由於屬性文件在幾分鐘後不可用,如何在刪除密鑰後訪問密鑰?

由於密鑰是固定的,可予分配值給Singleton類,其保持key1,key2,key3並使用singleton對象?

這是推薦的解決方案嗎?

+0

當您需要重新啓動應用程序時會發生什麼? – geoand

回答

0

爲了避免在讀取文件之前刪除文件時可能出現的問題,我還會添加一些確認所有密鑰已被讀取並準備好使用的邏輯。當這個檢查通過時,應該更新一些狀態,表明文件可以被刪除。刪除文件的外部服務應該像

  • 檢查文件是否被讀取;
  • 如果否,睡一段時間;
  • 如果前一個爲真,則轉到第一個點(文件尚未讀取);
  • 如果是,則刪除文件並停止活動;