无法加载ApplicationContext

时间:2012-09-19 22:12:55

标签: java eclipse spring

我正在尝试从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;

我该如何运作?

1 个答案:

答案 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 javadocan example