简体   繁体   English

如何用Spring注入MessageSource资源包?

[英]How to inject MessageSource resource bundle with Spring?

Hi have two different message bundles. 嗨,您有两个不同的消息束。 How can I directly inject them into a spring bean MessageSource ? 如何将它们直接注入Spring bean MessageSource

The following does not work: 以下内容不起作用:

@Resource(name = "${messages_one_EB.properties}")
private MessageSource messageSourceOne;

@Resource(name = "${messages_two_EN.properties}")
private MessageSource messageSourceTwo;

Result: java.lang.IllegalArgumentException: Could not resolve placeholder 'messages_one_EB.properties' 结果: java.lang.IllegalArgumentException: Could not resolve placeholder 'messages_one_EB.properties'

Probably it works similar, but how? 可能它的工作原理类似,但是如何? I could not find any example in the docs. 我在文档中找不到任何示例。

Both bundles are placed under src/main/resources/ 这两个包都放在src/main/resources/

I guess you can declare 2 different beans for your message sources and then inject them by name: 我猜您可以为消息源声明2个不同的bean,然后按名称注入它们:

@Bean
public MessageSource messageSource1() {
    final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();

    messageSource.setBasename("classpath:i18n/messages1");
    messageSource.setFallbackToSystemLocale(false);
    messageSource.setCacheSeconds(0);

    return messageSource;
}

@Bean
public MessageSource messageSource2() {
    final ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();

    messageSource.setBasename("classpath:i18n/messages2");
    messageSource.setFallbackToSystemLocale(false);
    messageSource.setCacheSeconds(0);

    return messageSource;
}

Then in your class: 然后在您的课程中:

@Resource(name = "messageSource1")
private MessageSource messageSourceOne;
@Resource(name = "messageSource2")
private MessageSource messageSourceTwo;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM