2014-04-15 49 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

为了避免在读取文件之前删除文件时可能出现的问题,我还会添加一些确认所有密钥已被读取并准备好使用的逻辑。当这个检查通过时,应该更新一些状态,表明文件可以被删除。删除文件的外部服务应该像

  • 检查文件是否被读取;
  • 如果否,睡一段时间;
  • 如果前一个为真,则转到第一个点(文件尚未读取);
  • 如果是,则删除文件并停止活动;