我正在实施 spring 云配置以在我的应用程序中外部化配置。我有 Spring Boot 应用程序,其中已经实现了属性占位符配置器。后来我做了与spring cloud config相关的更改,它没有从远程存储库中读取属性文件。它总是从属性占位符配置器中给出的静态属性中读取。如何使 spring cloud config 与属性占位符配置器一起工作?我希望我的应用程序根据给定的配置文件从远程存储库中读取属性并覆盖属性占位符配置器值。请帮我解决这个问题。提前致谢!
属性占位符配置:
<?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>
我编写了一个控制器来检查它是否正在从远程存储库中读取属性。
@RefreshScope
@RestController
class HelloController {
@Value("${db.url:Hello default}")
private String message;
@RequestMapping("/message")
String getMessage() {
return this.message;
}
}
当我运行并检查 db url 时,它总是返回属性占位符配置中给出的“test_url”,它不会从远程存储库中读取。
让我知道我是否缺少使其工作的东西,或者如果无法将 Spring 云配置和属性占位符配置器结合起来。