project-web と project-service の 2 つのプロジェクトがあり、どちらも Spring コア 3.1.3 を使用し、対応するプロパティ ファイルからプロパティをロードするための構成があります。
project-web -- Spring Integration ベースのプロジェクト。Spring 構成ファイル内:
<context:property-placeholder location="WEB-INF/spring-integration/spring-integration.properties" ignore-resource-not-found="true" />
<import resource="classpath*:META-INF/spring/applicationContext.xml" />
インポートには、project-service からのスプリング構成ファイルが含まれます。project-service プロジェクトでは、次のように構成しました。
<context:property-placeholder location="classpath:META-INF/application.properties, classpath:META-INF/db.properties" ignore-resource-not-found="true"/>
<import resource="classpath:META-INF/spring/applicationContext-data.xml"/>
私が持っているapplicationContext-data.xml内に、DAOのSpring構成を含めるためのインポート:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${db.${db.type}.driver}" />
<property name="url" value="${db.${db.type}.url}"/>
<property name="username" value="${db.${db.type}.username}" />
<property name="password" value="${db.${db.type}.password}" />
</bean>
project-service の単体テストを実行すると、すべて問題なく、すべての変数が問題なく正しく解決されます。しかし、project-web を実行すると (project-service は project-web の WEB-INF/lib フォルダーに .jar ファイルとして含まれます)、起動時に ${db.type を解決できないというエラーがスローされます。 }:
" db.${db.type}.driver" at org.springframework.beans.factory.config.PlaceholderConfigurerSupport.doProcessProperties(PlaceholderConfigurerSupport.java:209) ~[spring-beans-3.1.3.RELEASE.jar:3.1.3. RELEASE] at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.processProperties(PropertySourcesPlaceholderConfigurer.java:174) ~[spring-context-3.1.3.RELEASE.jar:3.1.3.RELEASE] at org.springframework.context.support. PropertySourcesPlaceholderConfigurer.postProcessBeanFactory(PropertySourcesPlaceholderConfigurer.java:151) ~[spring-context-3.1.3.RELEASE.jar:3.1.3.リリース] ...................
注: project-service は他のプロジェクトでも使用されるため、project-web ですべてを宣言することはできません。project-service が単独で実行されている場合は機能するが、project-web に含まれている場合は機能しない理由を知っている人はいますか? ネストされた変数 ${db.type} を解決できません