0

我写了一个测试类来读取定义的属性

    @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath*:config/TestOne.xml","classpath*:config/TestTwo.xml"
})
public class PropertyTest {
        @Value("${test.one:DEFAULT}")
        private String test;
        @Value("${test.two:DEFAULT}")
        private String test2;

        @Test
        public void TestProperty(){

                System.out.println(test + "," + test2);

        }

}

TestOne.xml

  <context:property-placeholder
                location="classpath*:/config/testone.properties"                
                ignore-unresolvable="true" order="1" />  

测试二.xml

<context:property-placeholder
                location="classpath*:/config/testtwo.properties"               
                ignore-unresolvable="true" order="2" />

testone.properties

test.one=testone

testtwo.properties

test.one=testone

test.two=test

运行测试时,输出为

睾酮,默认

它不是从属性中获取 test.two 。

如果我没有指定默认值

@Value("${test.two}")
        private String test2;

输出是 testone,test

有人可以帮忙吗?

4

1 回答 1

0

我担心这个问题:“两个属性占位符和一个默认值”不容易解决,因为看起来默认值已经被第一个“触发”了,property-placeholder所以第二个不需要“设置这个属性”再次”。

一种解决方法是只有一个property-placeholder具有两个配置文件和最高顺序:

<context:property-placeholder
            locations="classpath*:/config/testone.properties,
                       classpath*:/config/testtwo.properties"                
            ignore-unresolvable="true" order="0" />  

(注意:locations属性而不是location

于 2016-02-28T07:46:18.643 回答