Spring Boot项目读取不到配置文件中的“url“属性

Posted luxinfeng666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot项目读取不到配置文件中的“url“属性相关的知识,希望对你有一定的参考价值。

最近新起了一个spring boot项目,配置了mysql作为项目的数据库。但是在项目启动时,报错:Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could found。

背景

新起的spring boot项目启动时报错如上,针对上述报错,google了一下,发现大部分的解决办法都属于以下三种:

  1. 项目本身不需要数据库相关配置,直接在项目的主函数上添加@springbootapplication(exclude = datasourceautoconfiguration.class )注解
  2. 项目需要使用数据库,但是配置文件(application.properties/application.yml)中没有相关数据库配置
  3. 项目中配置了数据库相关属性,但是配置错了(比如url格式异常),导致配置文件无效,其效果类似第2点

但是我挨个排查了下,发现我的这种情况不属于以上三种,项目需要使用数据库相关配置,在配置文件中也添加了正确的数据库配置属性,配置如下:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.0.28:25285/system_monitor
spring.datasource.username=admin
spring.datasource.password=1234567890

排查

根据项目启动时的错误提示,可以看出spring boot服务在启动时确实是没有获取到数据库的url属性,但是我明明在配置文件中配置了相关信息的啊。最后找到这篇博客,发现是yml文件或者properties文件没有在pom文件中配置,所以扫描不到,因此系统给了这个错误提示。

解决

在pom文件中添加上这个文件即可,具体可见下列代码。问题得以解决

        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.yml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>*.properties</include>
                    <include>*.yml</include>
                </includes>
            </resource>
        </resources>

思考

大家后续看到这个问题,可以按照如下思路优先排查下

  1. 配置文件是否已经添加到pom文件中,如果没有,添加下即可
  2. 已添加到pom文件中,那需要看项目是否需要数据库相关配置,不需要的话,注释掉相关引入并在项目的主函数上添加@springbootapplication(exclude = datasourceautoconfiguration.class )注解即可
  3. 需要引入数据库,那需要看下url是否格式正确,相关驱动是否输入正确。

spring boot框架学习之重要注解3注解方式读取外部资源配置文件

本节主要内容:

1:是用非注解方式怎么获取配置文件中的配置项

2:使用注解实战获取外部properties文件配置项

声明:

本文是《凯哥陪你学系列-框架学习之spring boot框架学习》中spring boot框架学习学前掌握之重要注解(3)-通过注解方式读取外部资源配置文件。欢迎大家提意见

一:是用非注解方式怎么获取配置文件中的配置项

说明:

在项目中,有些信息需要配置在文件中。

比如,我们会在fto.properties中配置ftp相关的文件。

技术分享

在之前我们想要获取ftp相关信息时候,如下图:

Java类中使用:

技术分享

工具类:GetPropertiesVlaue类如下图:

技术分享

通过这种方式才可以获取到对应的配置文件中的值。

从上面,我们可以知道,要想获取到配置文件中的值,需要做到:

1:需要知道文件名(文件名称或是文件相对路径)

2:需要知道获取文件中的那个key.

比如上面中:

static String FTPSERVER = GetPropertiesValue.getValue(FTPFILE, "ftpIP");

这种方法,是不是感觉有点麻烦。

二:使用注解实战获取外部properties文件配置项

2.1:注解@propertysource和@value的使用

请先看,以下是源码中demo:

技术分享

源码注释中大致意思:

在一个类使用了@configuration注解且使用了@propertysource这个注解

从propertysource注解中可以获取到对应文件中的key/value值。

接下来,我们来看看实际的伪代码:

技术分享

说明:

@propertysource:该注解是用于读取value中配置地址的文件。

@value(${}):其中${}中的值,是对应配置文件中的key的值


技术分享


思考问题:

1:如果是多个配置文件怎么写?

2:如果在propertySource的value值所配置的配置文件不存在怎么办?

欢迎大家学习下一篇文章。在下一篇中,我们将要介绍思考的问题怎么处理。

欢迎关注凯哥公众号:凯哥Java

欢迎访问凯哥个人网站:www.kaigejava.com

本文来源:http://www.kaigejava.com/article/detail/33

相关阅读:

spring boot框架学习学前掌握之重要注解(4)-通过注解方式读取外部资源配置文件2 

spring boot框架学习之重要注解3注解方式读取外部资源配置文件

spring boot框架学习学前掌握之重要注解(2)-通过java的配置方式进行配置spring

spring boot框架学习学前掌握之重要注解(1)-sprng的java配置方式


本文出自 “凯哥Java” 博客,转载请与作者联系!

以上是关于Spring Boot项目读取不到配置文件中的“url“属性的主要内容,如果未能解决你的问题,请参考以下文章

springboot 为啥读取不到 yml 属性

Spring boot + mybatis 只读取到一个jar包中的mapper配置文件

spring boot框架学习之重要注解3注解方式读取外部资源配置文件

无法从 Spring Boot 中的外部属性文件中读取值

spring-boot项目直接读取jar包内文件的最简单方法

springboot读取不到引入配置文件值