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

于 2012-09-20T02:03:02.547 に答える