レガシーライブラリを使用するSpringブートアプリケーションを作成しました。このレガシーライブラリは、XMLでいくつかのSpring Beanを定義しています。コンストラクタの引数としてプロパティの値に取るのひとつ: Springブートコマンドラインプロパティがapplication.propertiesで定義されているオーバーライドプロパティではありません
my.url=http://localhost:8080
が、私はMavenの春ブーツ使用:私の春のブートアプリで
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="myBean" class="com.em.MyBean">
<constructor-arg name="url" value="${my.url}"/>
</bean>
</beans>
は、私は次のように、このプロパティを定義するapplication.properties
を持っていますプラグインを使用してローカルで次のようにアプリケーションを実行します。
mvn spring-boot:run
そして、プロパティ値が期待通りに注入されます。
私がしようとすると、このようなコマンドラインでmy.url
プロパティをオーバーライドする場合:
mvn spring-boot:run -Dmy.url=http://www.override.net
オーバーライド値が使用されておらず、その代わり、application.properties
内の値が使用されています。
Springブートのドキュメントによれば、コマンドラインからの値は、第一優先度として選択されるべきです:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html。これは、ここでは当てはまりません。application.properties
からプロパティを削除すると、コマンドラインで渡された値が使用されるため、無視されるコマンドライン値ではないためです。 application.properties
の値がコマンドラインの値を上書きしているようです。
何が起こっているかについてのアイデアはありますか?
私は、-Dを使用するとjvm引数としてプロパティを渡し、春のブートプロパティではないと思います。 '--my.url = http:// www.override.net'を使って試してみましたか? –
XML設定の完全版を投稿できますか? –
@RahulSharma私は以下のアンディの提案に従って、それを試しましたが、違いはありませんでした。 – chrishern