Spring Boot 无法读取 yml 属性文件
Posted
技术标签:
【中文标题】Spring Boot 无法读取 yml 属性文件【英文标题】:Spring Boot can't read yml properties file 【发布时间】:2020-02-14 08:57:02 【问题描述】:我有一个适用于 Spring Boot 应用程序的属性文件,但是每当我将其转换为 Yaml 时,我都会收到错误消息,指出尚未指定数据库 url。
我正在使用以下依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
属性文件的配置如下(工作正常):
spring.datasource.url=jdbc:mysql://localhost:3306/db_name?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=username
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true
spring.jpa.show-sql=true
在 Yaml 中我有:
spring:
datasource:
url: "jdbc:mysql://localhost:3306/db_name?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"
driver-class-name: com.mysql.cj.jdbc.Driver
username: "username"
password: "password"
jpa:
hibernate:
ddl-auto: update
generate-ddl: true
show-sql: true
我试过带引号和不带引号,我试过用driverClassName代替driver-class-name,但是每次在服务器尝试启动时都会收到以下消息:
***************************
APPLICATION FAILED TO START
***************************
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
...
【问题讨论】:
参数的间距也会有影响,尝试改变它们。它可能会有所帮助。正如@fathy 建议的那样,从价值中删除引号 【参考方案1】:我认为您必须从
中删除"
url: "jdbc:mysql://localhost:3306/db_name?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"
让它像下面一样
url: jdbc:mysql://localhost:3306/db_name?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
关注link 可能会有所帮助
【讨论】:
我在这里发布问题之前研究了许多类似的问题并决定发布它,因为我完全被这个问题所困扰。是的,我可以保持原样,但是对于在单个文件中具有不同活动配置文件属性的选项,我想要 Yaml 版本。如文中所述,我在发布前尝试了带引号和不带引号。我想知道是否需要以某种方式再次定义 URL,或者我可能需要将 mySQL 显式声明为数据库源。一个月前我已经尝试过 yaml 转换并且遇到了完全相同的问题。 你确定你放了 *** hibernate.dialect : org.hibernate.dialect.MySQLDialect ***【参考方案2】:您是否在 pom.xml 文件中声明了 MySql 驱动器?如果你这样做了,Spring Boot 应该会自动发现你正在使用 MySql 并找出驱动程序类。
【讨论】:
以上是关于Spring Boot 无法读取 yml 属性文件的主要内容,如果未能解决你的问题,请参考以下文章
spring boot 读取配置文件(application.yml)中的属性值111
spring boot 读取 application.yml 中 List 类型数据
单体Spring boot引入外部配置文件yml,properties
spring boot 入门1-----如何使用@Value注解读取配置文件以及使用@ConfigrationProperties注解