cq7yun.com原创,转载请保留版权!
Spring Boot 版本: 2.2.8
Spring Cloud 版本: Hoxton.SR6
先说答案
zookeeper相关的配置要放在bootstrap.yml文件中,bootstrap主要用于从额外的资源来加载配置信息,比application.yml文件先加载。
问题:启动时获取不到zookeeper中的配置
我是在测试Hoxton这个版本时发现的这个问题,觉得有必要记录一下。
按我们现在的Spring Cloud微服务框架,都是用的zookeeper做服务发现和配置中心,还可以借助zookeeper来做共享互斥锁,解决微服务启动多个时的一些资源争用问题。目前来看,好像能满足这三个需求的,只有zookeeper。
application.yml配置都是从现有项目中复制过来的:
server:
port: 8080
address: localhost
spring:
profiles:
active: dev
application:
name: gateway
jpa:
hibernate:
ddl-auto: validate
show-sql: false
cloud:
zookeeper:
connect-string: localhost:2181
config:
enabled: true
root: /config/hoxton
profile-seperator: ","
watcher:
enabled: false
然后用zkui做了数据库连接参数的配置:
程序启动时报错,配置数据源(DataSource)失败:
Description:
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
解决思路
最初是怀疑Spring Cloud Hoxton这个版本的zookeeper配置,或许跟以前不一样了。后来对比能正常获取参数的应用,发现差异就是bootstrap和application的区别。
cq7yun.com原创,转载请保留版权!