2017-03-07 56 views
0

我已经阅读了一些关于如何向我的jee项目提供应用程序属性的内容。在jee应用程序上提供属性

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

有几种方法才达到的是:

  1. 使用项目属性文件。问题:
    • 关键信息(用户名,密码,API密钥......都在这个文件),
    • 这些信息都可以根据目标机器改变(我可以使用设置了一台具有MySQL的一个user1和另一方面我可以使用user2设置一台带有mysql的机器)。该文件的内容不应该保留在源代码中。
  2. 使用OS环境变量。
    • 有一些喜欢这种方式来提供属性的人。不过,我认为这不是一个更安全的方式。任何人在计算机上访问都将能够读取这些环境变量的内容。
  3. 我也读过,它能够使用web.xml但我不知道我怎么能达到我的目标。

是否有任何最佳做法指南获取此?

回答

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"); 
+0

这里的问题似乎是,任何开发者将能够获得访问这些信息......不是吗? – Jordi

相关问题