0

我正在尝试从 Eclipse 中运行 junit 测试,但出现“加载 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:无效的bean定义与名称URL [file:spring-configuration/common/common-beans.xml] 中定义的“bucketPartitionMapper”:无法解析占位符“域”

我如何让这个工作?

4

1 回答 1

1

如错误所述,Spring 无法解析“域”占位符。这意味着,在 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 and an example

于 2012-09-20T02:03:02.547 回答