提供jee应用的属性

时间:2017-03-07 09:28:50

标签: java-ee

我已经阅读了一些关于如何在一段时间之前为我的jee项目提供应用程序属性的内容。

aplication properties我的意思是例如数据库所在的位置,或用户或密码......

有几种方法可以实现:

  1. 使用项目.properties文件。问题:
    • 关键信息(用户,密码,API密钥......在此文件中),
    • 此信息可以根据目标机器进行更改(我可以使用user1设置带有mysql的计算机,另一方面我可以使用user2设置带有mysql的计算机。不应在源代码上维护此文件的内容。
  2. 使用OS环境变量。
    • 有些人喜欢这种方式来提供属性。尽管如此,我认为实现这一目标并不是一种更安全的方式。任何人都可以在机器上访问这些环境变量的内容。
  3. 我也读过它可以使用web.xml,但我不知道怎样才能达到目标。
  4. 是否有最佳实践指南可以获得此功能?

1 个答案:

答案 0 :(得分:0)

我认为您帖子的第三点可以被视为最佳做法。 您可以控制web.xml中的设置,并针对不同的环境使用不同的设置。为此,您可以在运行时传递属性文件并从中读取。

<context-param>
    <param-name>propertiesFile</param-name>
    <param-value>propertyFile.properties</param-value>
</context-param>

然后,您可以在运行时加载该属性:

Properties properties = new Properties();
GenericServlet myServlet = ...;
String propertyFileName = myServlet.getInitParameter("propertiesFile");
properties.load(getClass().getClassLoader().getResourceAsStream(propertyFileName));
Object myProperty = properties.get("myProperty");