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做了数据库连接参数的配置:

zkuidatasource.jpg

程序启动时报错,配置数据源(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原创,转载请保留版权!