如何加载属性文件并将其传递给java singleton(枚举)

如何加载属性文件并将其传递给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

我有一个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_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个问题,没有人会责怪你:)