项目使用disconf作为集中配置管理,首次启动是从服务器下载到classpath:application.properties,启动失败,二次启动读取已下载的配置,启动正常。
问题是:autoconfigure直接读不到jdbc配置,然后抛出异常。
org.springframework.context.annotation.AnnotationConfigApplicationContext|WARN|Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dsMaster' defined in class path resource [com/cc/mbb/data/bootstrap/config/DruidDataSourceConfig.class]: Invocation of init method failed; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).
主要依赖
spring-boot-starter-parent 1.5.10.RELEASE druid-spring-boot-starter 1.1.6
原提问者GitHub用户zhanglei86
可能是由于以下原因之一:
Disconf配置未正确加载:如果Disconf配置未正确加载,Druid Spring Boot Starter无法读取JDBC配置。请确保您已正确配置Disconf,并在应用程序启动时成功加载Disconf配置。您可以尝试在启动日志中查找与Disconf加载相关的错误信息,以确定Disconf配置是否正确加载。
配置文件优先级问题:如果您同时在Disconf和application.yml或application.properties中配置了JDBC信息,可能会导致Druid Spring Boot Starter无法正确读取JDBC配置。请注意,Disconf的配置文件优先级高于application.yml或application.properties,如果Disconf和application.yml或application.properties中存在相同的配置项,Disconf的配置将覆盖application.yml或application.properties中的配置。因此,在使用Disconf时,请确保JDBC配置项的名称和值与Disconf中的配置项相匹配,以确保Druid Spring Boot Starter正确读取JDBC配置。
缺少必要的依赖项:如果您的应用程序缺少必要的依赖项,可能会导致Druid Spring Boot Starter无法正确读取JDBC配置。请确保您已正确声明Druid Spring Boot Starter和Disconf的依赖,并且所有依赖项都已成功加载。您可以使用Maven或Gradle等构建工具来管理依赖项。
有两种解决方案:
1.如果启动Spring Boot时配置文件已经从配置服务器拉取下来了并且以文件的方式保存在本地,可以用 spring.config.location ,这个参数指定外部配置。例如:java -jar app.jar --spring.config.location=/home/admin/application.properties 详情:https://docs.spring.io/spring-boot/docs/1.5.10.RELEASE/reference/htmlsingle/#boot-features-external-config-application-property-files
2.可以在启动Spring Boot的时候从配置服务器拉取配置,然后追加到Environment里面,这个操作一定确保在初始化Bean的前面。
原回答者GitHub用户lihengming
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。