0

アプリケーションの構成を外部化するために、春のクラウド構成を実装しています。プロパティ プレースホルダー コンフィギュアラーが既に実装されているスプリング ブート アプリケーションがあります。後でSpring Cloud configに関連する変更を行ったので、リモートリポジトリからプロパティファイルを読み取っていません。プロパティ プレースホルダー コンフィギュアラーで指定された静的プロパティから常に読み取ります。プロパティプレースホルダーコンフィギュアラーと一緒にSpringクラウド構成を機能させるにはどうすればよいですか? アプリケーションで、指定されたプロファイルに従ってリモート リポジトリからプロパティを読み取り、プロパティ プレースホルダー コンフィギュアラーの値をオーバーライドする必要があります。この問題で私を助けてください。前もって感謝します!

プロパティのプレースホルダー構成:

<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations" value="classpath:application.properties" />
    </bean>
    <bean id="dtSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="url" value="**test_url**" />
    </bean>
</beans> 

Spring Cloud 構成 application.properties:

spring.application.name=<appname>
spring.cloud.config.server.git.uri=https://github.com/{username}/test.git
spring.cloud.config.server.git.username=<username>
spring.cloud.config.server.git.password=<password>
profiles.active=${spring.profiles.active}
spring.cloud.config.server.bootstrap=true
spring.config.name=<appname>

リモートリポジトリからプロパティを読み取っているかどうかを確認するコントローラーを1つ作成しました。

@RefreshScope
@RestController
class HelloController {

    @Value("${db.url:Hello default}")
    private String message;

    @RequestMapping("/message")
    String getMessage() {
        return this.message;
    }
}

実行して db url を確認すると、プロパティのプレースホルダー構成で指定された "test_url" が常に返され、リモート リポジトリから読み取られません。

機能させるために何か不足している場合、または Spring クラウド構成とプロパティ プレースホルダー コンフィギュアラーの両方を組み合わせることができない場合はお知らせください。

4

0 に答える 0