gpt4 book ai didi

spring - Spring配置文件中的多个messageSources

转载 作者:行者123 更新时间:2023-12-02 05:14:31 26 4
gpt4 key购买 nike

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

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

有人知道这个问题的解决方案吗?

谢谢。

最佳答案

我使用 Spring 中的 Message Sources 来支持 i18n。就我而言,我只需要一个,因此很容易将我需要的一个消息源注入(inject)到我正在创建的服务 bean 中。

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

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

关于spring - Spring配置文件中的多个messageSources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1947282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com