@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下它会加载系统属性。我从未处理过这种情况,所以我会感激任何帮助。
答案 0 :(得分:0)
您不需要使用环境类型的Bean。如果您已经完成了@PropertySource的定义,则可以使用@Value(" ...")。在那种情况下:
@Value("${username}")
请试试。