【问题标题】:retrieve config data in java properties file from web service从 Web 服务检索 java 属性文件中的配置数据
【发布时间】:2017-08-13 16:21:22
【问题描述】:
关于从 jersey web 服务检索存储在 java 属性文件中的配置数据的最佳方法,我需要您的建议,以便在这些 web 服务调用的多个 DAO 类中使用它们。
我实现的解决方案如下:
- 创建一个 java 属性文件并将我需要的所有属性放入其中
- 应用程序侦听器中的所有 java 属性文件并将属性放入 servletcontext 属性中
- 在 Web 服务中,我通过使用 @Context 注释在 servletContext 上注入一个实例来检索属性,并将它们传递给需要它们的任何 DAO 函数的方法。
那么这是一个好方法吗?如果没有,您能建议我另一种解决方案吗?
【问题讨论】:
标签:
java
web-services
properties-file
【解决方案1】:
而不是将单个属性作为属性放置到上下文中,而是将属性对象放入上下文中,然后从该道具对象中获取所需的属性。
【解决方案2】:
为什么不使用读取属性文件的 Singleton 类,
然后通过实现 ServletContextListener@contextInitialized 方法创建一个 applicationLister 并调用你的类的 getInstance (这一步不是强制性的,所以你可以离开它,它只是在应用容器开始时实例化单例),
您的整个项目中的 Adter 只需调用 satic 方法 YouClass.getInstance() 并访问您的属性。
举例:
public class MyPropertieFileReader {
private static MyPropertieFileReader instance = null;
private Properties properties;
protected MyPropertieFileReader() throws IOException{
properties = new Properties();
properties.load(getClass().getResourceAsStream("path-to-property-file.properties"));
}
public static MyPropertieFileReader getInstance() {
if(instance == null) {
try {
instance = new TestDataProperties();
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
return instance;
}
public String getProperty(String key) {
return properties.getProperty(key);
}
}
在您的 WS 中,只需调用
MyPropertieFileReader.getInstance().getProperty("property-name");
希望这会有所帮助。