web-dev-qa-db-ja.com

spring.config.locationがSpring Boot 2.0.0 M6で機能しない

マイクロサービスの1つをSpring Boot 2.0.0.M6に移行していますが、コマンドラインで--spring.config.location=オプションを使用するとエラーが発生します。エラーは次のとおりです。

Caused by: Java.lang.IllegalArgumentException: Could not resolve placeholder 'property' in value "${property}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.Java:172) ~[spring-core-5.0.1.RELEASE.jar:5.0.1.RELEASE]
at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.Java:124) ~[spring-core-5.0.1.RELEASE.jar:5.0.1.RELEASE]
at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.Java:237) ~[spring-core-5.0.1.RELEASE.jar:5.0.1.RELEASE]
at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.Java:211) ~[spring-core-5.0.1.RELEASE.jar:5.0.1.RELEASE]
at org.springframework.context.support.PropertySourcesPlaceholderConfigurer.lambda$processProperties$0(PropertySourcesPlaceholderConfigurer.Java:175) ~[spring-context-5.0.1.RELEASE.jar:5.0.1.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveEmbeddedValue(AbstractBeanFactory.Java:834) ~[spring-beans-5.0.1.RELEASE.jar:5.0.1.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.Java:1081) ~[spring-beans-5.0.1.RELEASE.jar:5.0.1.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.Java:1060) ~[spring-beans-5.0.1.RELEASE.jar:5.0.1.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.Java:578) ~[spring-beans-5.0.1.RELEASE.jar:5.0.1.RELEASE]
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.Java:91) ~[spring-beans-5.0.1.RELEASE.jar:5.0.1.RELEASE]
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.Java:367) ~[spring-beans-5.0.1.RELEASE.jar:5.0.1.RELEASE]
... 50 common frames omitted

カスタムプロパティファイルを使用しない場合、すべてが意図したとおりに機能するか、RELEASEバージョンを使用します。次のコマンドでアプリケーションを起動しています。

Java -jar application.jar --spring.config.location=app.properties

更新

このオプションを使用すると、引数ファイルのプロパティを上書きする以前のバージョンのSpringとは異なり、Springはプロジェクトのデフォルトのapplication.propertiesを完全に置き換えます。これはバグですか?

アップデート2

チームから response を取得しました。明らかにこれは意図された動作です。古いバージョンの動作を使用する方法があるかどうかを今すぐ知ることを試みます。

11
Samuel Birocchi

Springチームが述べたように、spring.config.locationの古い動作を使用する正しい方法は、新しいspring.config.additional-locationを使用することです

16
Samuel Birocchi

あなたのプロジェクト構造は非常に役に立ちます。しかしそれは別として。

春のドキュメントはフラグを使用する方法の例を示します:

    --spring.config.location=classpath:/default.properties

クラスパスに対してアプリケーションのプロパティを解決してみてください。

0