Spring配置文件中的多个消息源

Spring配置文件中的多个消息源,spring,internationalization,extensibility,resourcebundle,Spring,Internationalization,Extensibility,Resourcebundle,我们的web应用程序使用Spring2.5。它由几个模块组成,每个模块都可以带来额外的Spring上下文文件,这些文件会自动加载(到一个应用程序上下文中)。我们希望让每个模块提供额外的资源包(用于I18N支持) Spring通过在配置文件中注册名为messageSource的bean来支持国际化,但这假设我确切知道包含字符串的类或属性文件的完全限定名是什么。这是一个问题,因为其他模块可能将自己的属性文件放在不同的位置。因此,我正在寻找一种方法,让每个模块用自己的资源包定义自己的messageSo

我们的web应用程序使用Spring2.5。它由几个模块组成,每个模块都可以带来额外的Spring上下文文件,这些文件会自动加载(到一个应用程序上下文中)。我们希望让每个模块提供额外的资源包(用于I18N支持)

Spring通过在配置文件中注册名为messageSource的bean来支持国际化,但这假设我确切知道包含字符串的类或属性文件的完全限定名是什么。这是一个问题,因为其他模块可能将自己的属性文件放在不同的位置。因此,我正在寻找一种方法,让每个模块用自己的资源包定义自己的messageSource,但我不知道怎么做

有人知道这个问题的解决办法吗


谢谢。

我使用了Spring中的消息源来获得一些i18n支持。在我的例子中,我只需要一个消息源,这样就可以很容易地将我需要的一个消息源注入到我正在创建的服务bean中

我希望看到类似于我稍后将在Spring sources中提出的内容。但我没有看到任何可以聚合异构消息源的东西。如果它们都是资源包(如属性文件)的一部分,我相信您可以为ResourceBundleMessageSource编写一个包装器,该包装器可以在注册bean时动态更新

但是,如果您想聚合异构消息源,我建议您这样做。创建一个消息源聚合bean,该bean在加载时向ApplicationContext请求MessageSource.class类型的bean。然后,这个聚合bean可以让每个源尝试解析密钥并格式化消息。根据您拥有的文件/消息源类的数量,您可能希望允许聚合实现对它首先尝试使用的文件/消息源类进行优先级排序。如果性能出现问题,您还可以缓存哪个源解析了哪些键,这样聚合器就不必每次都猜测