系统属性会覆盖Windows下的本地属性

时间:2015-03-23 07:33:54

标签: java spring properties

@Configuration
@EnableTransactionManagement
@PropertySource(value = "classpath:/properties.properties")
public class DataBaseConfig {

@Resource
private Environment env;

@Bean
public DataSource dataSource() {

    String username = env.getProperty(ConfigurationProperties.DATABASE_USERNAME);
    env.getProperty("username : " + username);

    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    //some code
    return dataSource;
}

}

我有问题。当我使用Environment加载我的属性时,如果它们具有相同的名称,则将它们替换为系统属性。例如,当我尝试从我的属性文件加载属性“username”时,它将被替换为系统属性“username”。我知道环境不仅包含我的属性,还包含其他来源的其他属性,包括系统属性,但我不知道如何影响他们的顺序。这里最奇怪的是这个代码在Linux下正常工作并加载我需要的属性。但是在Windows下它会加载系统属性。我从未处理过这种情况,所以我会感激任何帮助。

1 个答案:

答案 0 :(得分:0)

您不需要使用环境类型的Bean。如果您已经完成了@PropertySource的定义,则可以使用@Value(" ...")。在那种情况下:

@Value("${username}") 

请试试。