Jakarta ee 提供jee应用程序的属性
一段时间前,我一直在阅读一些关于如何为我的jee项目提供应用程序属性的文章 我所说的Jakarta ee 提供jee应用程序的属性,jakarta-ee,Jakarta Ee,一段时间前,我一直在阅读一些关于如何为我的jee项目提供应用程序属性的文章 我所说的应用程序属性是指例如数据库所在的位置,或者用户或密码 有几种方法可以实现这一目标: 使用project.properties文件。问题: 关键信息(用户、密码、API密钥…在此文件中) 此信息可以根据目标机器而更改(我可以使用user1设置一台带有mysql的机器,另一方面,我可以使用user2设置一台带有mysql的机器)。不应在源代码上维护此文件的内容 使用操作系统环境变量。 有些人更喜欢用这种方式提供
应用程序属性
是指例如数据库所在的位置,或者用户或密码
有几种方法可以实现这一目标:
- 关键信息(用户、密码、API密钥…在此文件中)
- 此信息可以根据目标机器而更改(我可以使用
设置一台带有mysql的机器,另一方面,我可以使用user1
设置一台带有mysql的机器)。不应在源代码上维护此文件的内容user2
- 有些人更喜欢用这种方式提供属性。然而,我认为这并不是一个更安全的方法。任何在机器上获得访问权限的人都将能够读取这些环境变量的内容
web.xml
,但我不知道如何才能实现我的目标有什么最佳实践指南吗?我认为你文章的第三点可以被视为最佳实践。 您可以控制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");