我正在尝试从eclipse中运行junit测试,我得到了#34;无法加载ApplicationContext"例外。原因是它试图加载一个spring-config,它使用另一个spring-config中定义的变量。例如:
common-beans.xml使用$ {domain}和$ {realm}
这些在config2.xml中定义为:
<bean id="AppConfigHelper" class="AppConfigHelper">
<property name="appName" value="Service"/>
<property name="domain" value="unittest"/>
<property name="realm" value="asdf"/>
<property name="root" value="./build/private/unittestroot"/>
</bean>
java.lang.IllegalStateException:无法加载ApplicationContext org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 引起:org.springframework.beans.factory.BeanDefinitionStoreException:名称为&#39; bucketPartitionMapper&#39;的bean定义无效在URL [file:spring-configuration / common / common-beans.xml]中定义: 无法解析占位符&#39;域&#39;
我该如何运作?
答案 0 :(得分:1)
正如错误所述,Spring无法解析'domain'占位符。这意味着,在common-beans.xml中,您正在使用$ {domain},但Spring无法找到该占位符的值。您粘贴的代码仅为AppConfigHelper的域属性设置域属性,它不设置占位符。
要设置占位符,请创建一个名为application.properties的文件,并使其包含以下内容:
域= YOUR_DOMAIN_HERE
然后,您需要在应用程序中设置PropertyPlaceholderConfigurer,如下所示:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>application.properties</value>
</property>
</bean>
以下是一些可以帮助您的资源: PropertyPlaceHolderConfigurer javadoc和an example