Spring 云配置客户端属性未得到解析
Spring cloud config client properties are not getting resolved
我对 Spring 云和 Spring 外部配置的概念非常陌生,实际上昨天就开始了。
我创建了一个从本地 Git 存储库中挑选配置的配置服务器,一个也是配置客户端的微服务和一个 Eureka 驱动的服务发现服务器。
以下是我主要从 Internet 上的各种资源借用的代码 -
配置服务器 - application.yml:
server:
port: 8888
spring:
cloud:
config:
server:
git:
uri: file:///${user.home}/config-repo
配置服务器 - 主要 class (bootstrap)
@EnableConfigServer
@SpringBootApplication
public class CloudConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(CloudConfigServerApplication.class, args);
}
}
config-repo 是我机器上的本地 git 仓库,并且有一个带有配置客户端应用程序名称的 .yml 文件,即 authmanager.yml
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:8761/eureka/
healthcheck:
enabled: true
lease:
duration: 5
spring:
application:
data:
mongodb:
host: localhost
port: 27017
database: edc_mc
logging:
level:
org.exampledriven.eureka.customer.shared.CustomerServiceFeignClient: FULL
现在运行配置服务器之后,下面是终点http://localhost:8888/authmanager/default-
的输出
{"name":"authmanager","profiles":["default"],"label":"master","version":"0ca6ca7b4502b9bb6ce1bf8efeb25516682cf79a","propertySources":[{"name":"file:///C:\Users\username/config-repo/authmanager.yml","source":{"eureka.client.serviceUrl.defaultZone":"http://127.0.0.1:8761/eureka/","eureka.client.healthcheck.enabled":true,"eureka.client.lease.duration":5,"spring.application.data.mongodb.host":"localhost","spring.application.data.mongodb.port":27017,"spring.application.data.mongodb.database":"db_name","logging.level.org.exampledriven.eureka.customer.shared.CustomerServiceFeignClient":"FULL"}}]}
微服务+配置客户端代码-
bootstrap.yml-
server:
port: 9097
spring:
application:
name: authmanager
cloud:
config:
uri: http://localhost:8888
客户端 - 主要 class (bootstrap) -
@SpringBootApplication
@EnableDiscoveryClient
@EnableWebMvc
public class CloudLoginManagerApplication {
public static void main(String[] args) {
SpringApplication.run(CloudLoginManagerApplication.class, args);
}
}
配置客户端中的控制器class,我想在其中使用配置文件属性-
@RefreshScope
@RestController
@RequestMapping("/auth")
public class MyController {
@Value("${spring.application.data.mongodb.database}")
String env_var;
为清楚起见,跳过其余代码。
这是我遇到的错误 -
Could not resolve placeholder 'spring.application.data.mongodb.database' in string value "${spring.application.data.mongodb.database}"
其他属性如 server.port 没有问题。
我也尝试过 Environment 接口方式,但也返回 null。
请指点,我现在几乎走到了尽头。
谢谢,
阿杰
要启用云配置,您必须将 spring-cloud-starter-config
添加到您的依赖项中。您可以通过检查 /env(可能需要添加执行器)来验证哪些属性可用。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
我对 Spring 云和 Spring 外部配置的概念非常陌生,实际上昨天就开始了。
我创建了一个从本地 Git 存储库中挑选配置的配置服务器,一个也是配置客户端的微服务和一个 Eureka 驱动的服务发现服务器。
以下是我主要从 Internet 上的各种资源借用的代码 -
配置服务器 - application.yml:
server:
port: 8888
spring:
cloud:
config:
server:
git:
uri: file:///${user.home}/config-repo
配置服务器 - 主要 class (bootstrap)
@EnableConfigServer
@SpringBootApplication
public class CloudConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(CloudConfigServerApplication.class, args);
}
}
config-repo 是我机器上的本地 git 仓库,并且有一个带有配置客户端应用程序名称的 .yml 文件,即 authmanager.yml
eureka:
client:
serviceUrl:
defaultZone: http://127.0.0.1:8761/eureka/
healthcheck:
enabled: true
lease:
duration: 5
spring:
application:
data:
mongodb:
host: localhost
port: 27017
database: edc_mc
logging:
level:
org.exampledriven.eureka.customer.shared.CustomerServiceFeignClient: FULL
现在运行配置服务器之后,下面是终点http://localhost:8888/authmanager/default-
的输出{"name":"authmanager","profiles":["default"],"label":"master","version":"0ca6ca7b4502b9bb6ce1bf8efeb25516682cf79a","propertySources":[{"name":"file:///C:\Users\username/config-repo/authmanager.yml","source":{"eureka.client.serviceUrl.defaultZone":"http://127.0.0.1:8761/eureka/","eureka.client.healthcheck.enabled":true,"eureka.client.lease.duration":5,"spring.application.data.mongodb.host":"localhost","spring.application.data.mongodb.port":27017,"spring.application.data.mongodb.database":"db_name","logging.level.org.exampledriven.eureka.customer.shared.CustomerServiceFeignClient":"FULL"}}]}
微服务+配置客户端代码-
bootstrap.yml-
server:
port: 9097
spring:
application:
name: authmanager
cloud:
config:
uri: http://localhost:8888
客户端 - 主要 class (bootstrap) -
@SpringBootApplication
@EnableDiscoveryClient
@EnableWebMvc
public class CloudLoginManagerApplication {
public static void main(String[] args) {
SpringApplication.run(CloudLoginManagerApplication.class, args);
}
}
配置客户端中的控制器class,我想在其中使用配置文件属性-
@RefreshScope
@RestController
@RequestMapping("/auth")
public class MyController {
@Value("${spring.application.data.mongodb.database}")
String env_var;
为清楚起见,跳过其余代码。
这是我遇到的错误 -
Could not resolve placeholder 'spring.application.data.mongodb.database' in string value "${spring.application.data.mongodb.database}"
其他属性如 server.port 没有问题。
我也尝试过 Environment 接口方式,但也返回 null。
请指点,我现在几乎走到了尽头。
谢谢,
阿杰
要启用云配置,您必须将 spring-cloud-starter-config
添加到您的依赖项中。您可以通过检查 /env(可能需要添加执行器)来验证哪些属性可用。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>