:「プロパティ・プレースホルダー」との組み合わせで春ブーツ・スターター・親
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
よりますSpring Boot documentation Spring Boot Parentは、Springスタイルのプレースホルダとの競合を避けるため、maven-resources-pluginのデフォルトのフィルタトークンを$ {maven.token}から@ maven.token @に変更します。背景:Springの区切り文字はMavenデリミタと同じです。
私の理解によれば、変更はMavenプロパティに影響し、Springプロパティ拡張には影響しません。しかし、私は間違っているかもしれません。経由して輸入し、私のXMLベースのSpringアプリケーションコンテキストコンフィギュレーションファイルに:「プロパティ・プレースホルダーコンテキスト」:使用しているとき
さて、
@Configuration
@ImportResource("spring/applicationContext-core.xml")
@EnableJpaRepositories
@EnableAutoConfiguration
public class StudyDayApplication {
/**
* This main is for using Spring Boot in case of a JAR file packaging.
*
* @param args
*/
public static void main(String[] args) {
SpringApplication.run(StudyDayApplication.class, args);
}
}
春特定のキーのプロパティの拡張はもう動作しません。私の "application-core.xml"では、私はSpring固有の "property-placeholder"を使用して、外部化された構成プロパティを使用しています。しかし、私はまだSpring固有のプロパティデリミタ(例えば、 "dataSource" beanの "jpa.driver.classname"を展開する)を使いたいと思っています。
...
<context:property-placeholder
ignore-resource-not-found="false"
location="classpath*:*.properties"/>
...
<bean class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" id="dataSource">
<property name="driverClassName" value="${jpa.driver.classname}"/>
...
しかし、次のXMLを追加するときfollowing remarkによると
"@ @ jpa.driver.classname" で "$ {jpa.driver.classnameを}" 交換時に春の交換のみ動作属性:
order="1"
ignore-unresolvable="true"
「プロパティ・プレースホルダー」に私は私に言って春ブート起動時に例外を得ることはありません:
「文字列値 にプレースホルダ 『jpa.driver.classname』を解決できませんでした 『$ {jpa.driver.classname}』
しかし、私は、プロパティの拡張が正しくように動作しないことを確信しています」 property-placeholder "は解決不可能な項目を無視します。 Beanが展開されていないプロパティキーを使用してBeanをインスタンス化すると、後で例外が発生します。 "order = 1"属性だけを設定しても役に立ちません。
「プロパティプレースホルダ」を明示的にSpring Boot searches for "application.properties" automatically within the applicationとして使用する必要はありません。しかし、私はこのアプローチに切り替えたくありません。
"spring-boot-starter-parent"を使用し、一般的なSpringプロパティ展開を有効にする方法はありますか?