当注册ResourceBundleMessageSource bean时,Spring 4 @PropertySource无法正常工作

时间:2017-01-24 06:43:33

标签: spring properties resourcebundle

@Configuration
@PropertySource("classpath:service.properties")
public class ApplicationConfig{
    @Value("PROPERTY_MYSQL_JNDI_NAME")
    private String jndiName;
}

这工作正常。但是当我注册时

@Bean
public MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasenames("resources/authentication");
    messageSource.setDefaultEncoding("UTF-8");
    return messageSource;
}
ApplicationConfig类中的bean以前的属性加载不起作用。有什么我可以做的测试吗

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。就我而言,我错过了添加以下bean:

@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    return new PropertySourcesPlaceholderConfigurer();
}

使属性加载正常工作。

答案 1 :(得分:0)

你的messageSource是错的,假设你的authentication.properties在src / resources中,它应该如下所示:

@Bean
public MessageSource messageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasenames("authentication");
    messageSource.setDefaultEncoding("UTF-8");
    return messageSource;
}

您仍然可以使用

@PropertySource("classpath:config.properties")

假设config.properties位于src / resources

相关问题