java web项目启动时加载资源文件

做国际化的资源文件。

做的时候是用一个servlet启动读取资源文件,用一个工具类进行操作,读取资源文件和提取字段

用一个private的Properties在项目启动时把所有资源都读进来,然后哪里用到区分语言的字段就从Properties工具类取

想的是只加载一次,把所有的加进来

在servlet的init-parameter中配置用什么语言

做好之后发现有一次自己写的listener(半路加入的),在读取资源文件之间就已经要用Properties的字段了

这时候加载资源的servlet还没有init,也还没有读到init-parameter,不知道用什么哪个语言的资源文件

怎么做才能保证资源的读取早于web的任何一个组件

这是一种标准的做法,你看看Spring加载资源文件的过程:
[code]

contextConfigLocation

/WEB-INF/applicationContext.xml

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

[/code]

推荐这样初始化properties资源:
在web.xml里面添加一个context-param:
[code]

lang
cn

[/code]
在下面添加一个listener,在这个listener的init方法里面初始化properties资源,然后把资源注入到servletContext:filterConfig.getServletContext().setAttribute("lang-props", "...");
下面的servlet要使用这个资源的话,可以在init方法里面通过servletConfig.getServletContext().getAttribute("lang-props");
获取到。