Spring Boot YAML 自动数据源配置问题 - 未拾取数据源 URL

Posted

技术标签:

【中文标题】Spring Boot YAML 自动数据源配置问题 - 未拾取数据源 URL【英文标题】:Spring Boot YAML Auto Data Source Configuration Issue - Data Source URL not picked up 【发布时间】:2019-01-08 16:22:00 【问题描述】:

目前,我们正在为我们的新模块创建一个 Spring Boot 项目。

我们使用的技术如下:

    Java 1.8 Maven 3.5.2 Spring Boot:1.5.6.RELEASE (spring-boot-starter-parent)

公共类应用程序

public static void main(String[] args) 
    SpringApplication.run(Application.class, args);


@Autowired
private DataSource datasource;

application.properties

spring.datasource.url=jdbc:oracle:XXX:@XXX:XXX/XXX spring.datasource.username=XXX spring.datasource.password=XXX spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver

application.yml

春天:

个人资料: 活动:“开发” 主要:

- 横幅模式:“关闭”

春天:

个人资料:开发人员 数据源: url:jdbc:oracle:XXX:@XXX:XXX/XXX 用户名:XXX 密码:XXX 驱动程序类名:oracle.jdbc.driver.OracleDriver

当我们将数据源信息添加为属性文件时,应用程序按预期工作。但是作为 YAML 的信息意味着显示以下错误。

错误

上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为“testapplication”的bean时出错:通过字段“datasource”表示的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义的名称为“dataSource”的 bean 时出错 [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Tomcat.class]:Bean 实例化通过工厂方法失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:无法实例化 [org.apache.tomcat.jdbc.pool.DataSource]:工厂方法 'dataSource' 抛出异常;嵌套异常是 org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException:无法确定数据库类型 NONE 的嵌入式数据库驱动程序类。如果您想要一个嵌入式数据库,请在类路径中放置一个受支持的数据库。如果您有要从特定配置文件加载的数据库设置,您可能需要激活它(配置文件“dev”当前处于活动状态)

【问题讨论】:

没有源代码就帮不上什么忙了...另外请尝试提供MCVE yml 中的 spring:profiles:active 属性值是多少? spring:profiles:active:“dev” main:banner-mode:“off”--- driver-class-name:oracle.jdbc.driver.OracleDriver 的冒号后面有空格吗?如果不是那是错误的。根据 yml 约定,您需要在冒号后有一个空格 没有空格@pvpkiran 【参考方案1】:

Yml 标准要求我们在冒号后指定一个空格 (:)。请查看documentation 像这样更改您的 yml,它应该可以正常工作。

spring:
  profiles: dev
  datasource:
     url: jdbc:oracle:XXX:@XXX:XXX/XXX
     username: XXX
     password: XXX
     driver-class-name: oracle.jdbc.driver.OracleDriver

【讨论】:

以上是关于Spring Boot YAML 自动数据源配置问题 - 未拾取数据源 URL的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot 学习笔记 -- [spring Boot配置文件之YAML格式, springBoot自动配置浅入,springboot集成JDBC]

spring Boot的配置

Spring Boot:使用 yaml 中配置的 Maven 属性

spring boot 数据源配置YAML格式

Spring Boot 配置文件: application.properties和application.yaml

Spring Boot2 系列教程理解Spring Boot 配置文件 application.properties