Spring Boot YAML自动数据源配置问题 - 数据源URL未被识别

4

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

我们使用的技术如下:

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

public class Application {

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

  • spring:

    • profiles:
    • active: "dev"
    • main:

      - banner-mode: "off"

  • spring:

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

当我们将数据源信息作为属性文件添加时,应用程序按预期工作。但是如果使用 YAML 格式,则会显示以下错误。

错误

在上下文初始化期间遇到异常——取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException:创建 bean 的名称为‘testapplication’的字段 'datasource' 未满足依赖项;嵌套异常是 org.springframework.beans.factory.BeanCreationException:定义在类路径资源中的bean 名称为“dataSource”的创建出错 [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")


你在yml文件中的spring:profiles:active属性值是什么? - amant singh
spring: profiles: active: "dev" main: banner-mode: "off"
- user10164097
你在 driver-class-name:oracle.jdbc.driver.OracleDriver 冒号后面有空格吗?如果没有,那是错误的。根据 yml 约定,你需要在冒号后面加上一个空格。 - pvpkiran
非常感谢 @pvpkiran。在加空格后,它可以正常工作了。 - user10164097
当然可以。@pvpkiran - user10164097
显示剩余2条评论
1个回答

2
Yml标准要求我们在冒号(:)后面指定一个空格。请查看文档。将您的yml更改为以下内容,应该可以正常工作。
spring:
  profiles: dev
  datasource:
     url: jdbc:oracle:XXX:@XXX:XXX/XXX
     username: XXX
     password: XXX
     driver-class-name: oracle.jdbc.driver.OracleDriver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接