如何加载属性文件并将其传递给java singleton(枚举)
我有一个java单例类,它有我的应用程序设置 我采用了这种方法: 因此,我:如何加载属性文件并将其传递给java singleton(枚举),java,spring,singleton,Java,Spring,Singleton,我有一个java单例类,它有我的应用程序设置 我采用了这种方法: 因此,我: public enum MySettings { INSTANCE; // bunch of private vars private MySettings { // load a json file and set my properties JsonParser parser = jf.createJsonParser(new File("HARD_CODED_PATH
public enum MySettings {
INSTANCE;
// bunch of private vars
private MySettings {
// load a json file and set my properties
JsonParser parser = jf.createJsonParser(new File("HARD_CODED_PATH_HERE"));
}
// public getters/setters here
}
所以问题是我目前的硬编码路径
我在/WEB-INF/文件夹中创建了一个settings.properties文件,现在问题是我知道如何加载属性文件的唯一方法,它需要servlet上下文:
Properties prop = new Properties();
propertiesload(getServletContext().....);
是否有其他方法加载此文件
那么,这个属性文件是属性文件的静态表示吗?i、 e.它非常快速有效?您可以尝试将您的属性直接放在src文件夹下而不是WEB-INF文件夹下吗
WORKDIR
+ SRC
| + PACKAGES
| | + org.personal.foo
| - system.properties
| + WEB-INF
Spring具有将属性文件公开为bean的功能。你可能想走这条路,因为你在帖子上贴了“春天”的标签 下面是一个人对如何使用Spring加载属性文件的看法:
如果您解释(a)属性文件在打包的WAR文件中的最终位置,以及(b)如何将其加载到代码中,这将是一个更好的答案。@TomAnderson我不希望将该文件作为资源嵌入,因为这样我就必须重新编译以更改设置(而不是重新启动tomcat)。所以它将以纯文本的形式出现在/web inf文件夹中。@Blankman:如果您的WAR被分解了,就像它听起来那样,您就不必重新编译了。您只需更改文件并重新启动即可。@TomAnderson啊,好的,确实有效。那我怎么才能加载呢?我没有从singleton类内部访问getServletContext()的权限,所以我应该怎么做?@Blankman如果文件在类路径上,就像这里一样,那么您可以使用加载它。我希望Em Ae能指出这一点,但显然不是。@AndyRay,但我接受了60%…我很想批评,但我的是40%。@Tom总共提出了6个问题,没有人会责怪你:)