azi*_*azi 5 java spring spring-mvc spring-4
Spring公司推出了新的注释@PropertySources对标记为所有类@Configuration自4.0。它采用不同的@PropertySource参数。
@PropertySources({
@PropertySource("classpath:application.properties"), @PropertySource("file:/tmp/application.properties")})
Run Code Online (Sandbox Code Playgroud)
我感兴趣的是,要知道多个属性文件中存在的同一键的值发生冲突时的排序。我还没有看到任何与此相关的文档来指定订购。我尝试了多次,发现PropertySource后面提到的内容将覆盖前面提到的值PropertySource。但是,如何确定?
@PropertySources的文档没有说明在多个 @PropertySource 文件中存在相同属性的情况。
但是,@PropertySource 的文档说明如下:
如果给定的属性键存在于多个 .properties 文件中,最后处理的 @PropertySource 注释将“获胜”并覆盖
由于@PropertySources 中的@PropertySource 声明实际上是一个表,因此可以相当安全地假设最后声明的@PropertySource 覆盖了之前的声明。这与我所做的测试和这篇博客文章一致。
但是,正如问题中提到的,文档中没有明确指出。因此,该行为将来可能会“意外”改变。