- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是 Spring 的新手,正在尝试使用它的 ReloadableResourceBundleMessageSource 类。
我正在尝试使用它,以便我们不再需要为属性文件更改/更新重新启动我们的网络应用程序。
我有一个网络应用程序(主要使用 JSF)和一个包含我所有属性文件的单独的 tar 组件。
属性tar的结构如下:
- CompanyOneMessages.properties
- CompanyOneMessages_fr_FR.properties
- CompanyTwoMessages.properties
- CompanyTwoMessages_fr_FR.properties
- CompanyThreeMessages.properties
- CompanyThreeMessages_fr_FR.properties
- ...
此 tar 被解压缩并部署到服务器上指定为在 websphere 配置中的类路径上的位置。
我将以下内容添加到我的 applicationContext-config.xml 中:
<!-- Enable reloading of resource bundles without requiring web-app restart -->
<bean id="messages"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basenames">
<list>
<value>classpath:com/resource/dynamic/CompanyOneMessages</value>
<value>classpath:com/resource/dynamic/CompanyTwoMessages</value>
<value>classpath:com/resource/dynamic/CompanyThreeMessages</value>
</list>
</property>
<property name="cacheSeconds" value="1" />
</bean>
<!-- Declare location of bean to handle messages and define property reference
we will use to reference message properties throughout the presentation layer -->
<bean id="myappMessages" class="com.myapp.resource.MyAPPMessages">
<property name="messages" ref="messages" />
</bean>
一切正常。
但是,它并没有完全解决原来的问题。任何时候我想向我们的应用程序添加新公司时,我都必须向 applicationContext-config.xml 文件添加新行并重新部署/重新启动 Web 应用程序。
我希望能够简单地将新的公司属性文件放入属性 tar 中,以便动态获取它。
是否可以扩展 ReloadableResourceBundleMessageSource 类,使其在应用程序启动时搜索属性文件的类路径并动态加载所有这些文件?
这是我目前所拥有的:
applicationContext-config.xml:
<bean id="messages" class="com.resource.MyAPPReloadableResourceBundleMessageSource">
</bean>
MyAPPReloadableResourceBundleMessageSource:
package com.myapp.resource;
import org.springframework.context.support.ReloadableResourceBundleMessageSource;
public class MyAPPReloadableResourceBundleMessageSource extends ReloadableResourceBundleMessageSource
{
public MyAPPReloadableResourceBundleMessageSource()
{
getResourceBundlesMessages();
// Simply single basename test
setBasename("classpath:/resource/dynamic/companyOneMessages");
}
@Override
public void setBasename(String baesname)
{
System.out.println("In setBasename");
super.setBasename(baesname);
}
@Override
public void setBasenames(String[] baesnames)
{
System.out.println("In setBasenames");
super.setBasenames(baesnames);
}
private String[] getResourceBundlesMessages()
{
String[] propertiesFiles = null;
// How do I get all filenames with .properties under com.resources.dynamic? (location is under classpath)
return propertiesFiles;
}
}
所以我只需要如何获取类路径下所有扩展名为 .properties 的文件的列表?
谢谢
托马斯
最佳答案
ReloadableResourceBundleMessageSource
要求文件位于 webapp/目录下,而不是在您的类路径中(它无法重新加载这些文件)。
关于java - 使用 ReloadableResourceBundleMessageSource 在类路径上动态加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9035588/
Spring mvc 新手,我尝试使用属性文件中的“ReloadableResourceBundleMessageSource”显示自定义错误消息,但仍然无法获取自定义消息,我得到的是 spring
经过一些测试,看起来ReloadableResourceBundleMessageSource不支持通配符。 假设捆绑文件位于资源中,并具有以下名称:messages.properties、messa
我在WEB-INF/i18n目录下有两个文件: application.properties 消息.properties 我已经正确配置了我的 ReloadableResourceBundleMess
在我的应用程序中,我已经使用了 ResourceBundleMessageSource 一切正常,但目前我想为我的应用程序使用 UTF-8 编码,并将 ResourceBundleMessageSo
我正在尝试使用可重新加载的 spring 资源包,但 spring 找不到该文件。我尝试了很多不同的路径,但无法让它在任何地方工作。在下面的代码中,您将看到我从同一路径变量加载了 spring 包和常
我正在使用 i18n 开发一个应用程序,该应用程序在我的开发环境(Windows)中运行良好,但是,当我尝试在 Linux 中部署时,一切似乎都正常,直到我发出请求并收到消息 No message f
我是 Spring 的新手,正在尝试使用它的 ReloadableResourceBundleMessageSource 类。 我正在尝试使用它,以便我们不再需要为属性文件更改/更新重新启动我们的网络
为了以编程方式刷新资源包缓存,我使用了 Spring 的 ReloadableResourceBundleMessageSource。我无法将它注入(inject)到我想要调用 clearCache(
我在我的Web项目中使用ReloadableResourceBundleMessageSource,并将类注入(inject)到servlet中,问题是我想使用Spring注释注入(inject)类,
在 Google 上搜索如何在 Spring 3 中配置属性文件,我得到了许多不同的答案。我发现 ReloadableResourceBundleMessageSource和 PropertyPlac
我正在学习 Spring 。我尝试使用 ResourceBundleMessageSource,这是我尝试过的示例。 主应用 public class MainApp { public sta
我有这个简单的测试,它甚至不是测试,因为我只是想模拟消息源。 我收到这个错误: org.springframework.context.NoSuchMessageException: No messa
我正在使用 ReloadableResourceBundleMessageSource 来存储我系统的值列表。所以我可以使用 i18N 功能 我在 ReloadableResourceBundleMe
您好,我正在尝试在我的 Spring MVC Web 应用程序中配置消息源。 我目前已经让它与 ReloadableResourceBundleMessageSource 一起运行,但我无法让它与 R
为什么 Spring “ReloadableResourceBundleMessageSource”在 Locale.getDefault() 返回 en 时无法找到与代码关联的正确消息,但在返回 e
我定义了以下 Spring bean: classpath:messages Controller : @Contr
我在文档中找不到这个: 假设我有一个 ReloadableResourceBundleMessageSource,如果我使用另一个进程为刚刚添加到属性文件中的属性调用 getMessage() ,这会
我正在我的 Spring Web 应用程序中启用消息国际化。为此,我的 servlet.xml 中有以下代码 添加上面的代码后,只要我在浏览器中点击我的
我是一名优秀的程序员,十分优秀!