繁体   English   中英

Spring中具有不同@PropertySource的常见@Configuration的几个实例

[英]Several instances of a common @Configuration with different @PropertySource in Spring

嗨,我有以下配置文件:

@Configuration
@PropertySources({
    @PropertySource("classpath:english.properties"),
    @PropertySource("classpath:spanish.properties")
})
public class LanguageConfig {

    @Value(${hello})
    private String hello;

    // getter setter
}

我想知道是否有办法自动装配LanguageConfig 的两个实例,每种语言一个。 就像是 :

public Myservice() {

    @Autowire
    @Qualifier("englishLanguage")
    private LanguageConfig englishConfig;


    @Autowire
    @Qualifier("spanishLanguage")
    private LanguageConfig spanishConfig;


}

谢谢你。

不确定你想做的事情是否可以实现,但我为你提供了这个解决方案。

您可以将每种语言放在一个单独的文件中,而不是将它们放在一个文件中,比如languages.properties ,然后使用@PropertySource("classpath:language.properties")注释添加它。 之后,您可以使用@ConfigurationProperties注入这些属性。

en.hello=Hello
sp.hello=Hola

LanguageConfig 类应如下所示。

public class LanguageConfig {

    private String hello;

    public String getHello() {
        return hello;
    }

    public void setHello(String hello) {
        this.hello = hello;
    }
}

将这些LanguageConfig对象创建为 bean,并将以ensp开头的属性注入到每个对象中。

    @Bean
    @ConfigurationProperties("en")
    public LanguageConfig engConfig() {
        return new LanguageConfig();
    }

    @Bean
    @ConfigurationProperties("sp")
    public LanguageConfig spanishConfig() {
        return new LanguageConfig();
    }

然后您可以轻松使用它们。

    @Autowired
    @Qualifier("engConfig")
    LanguageConfig englishConfig;

    @Autowired
    @Qualifier("spanishConfig")
    LanguageConfig spanishConfig;

暂无
暂无

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

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