解决springboot利用ConfigurationProperties注解配置数据源无法读取配置信息问题

 更新时间:2021年05月29日 10:40:42   作者:今天学习了?  
今天在学习springboot利用ConfigurationProperties注解配置数据源的使用遇到一个问题无法读取配置信息,发现全部为null,纠结是哪里出了问题呢,今天一番思考,问题根源找到,下面把我的解决方案分享到脚本之家平台,感兴趣的朋友一起看看吧

@ConfigurationProperties是springboot新加入的注解,主要用于配置文件中的指定键值对映射到一个java实体类上。那么它是怎么发挥作用的呢?下面我们将揭开@ConfigurationProperties的魔法。

ConfigurationPropertiesBindingPostProcessor这个bean后置处理器,就是来处理bean属性的绑定的,这个bean后置处理器后文将称之为properties后置处理器。你需要知道以下几件事:

ioc容器context的enviroment.propertySources记录着系统属性、应用属性以及springboot的默认配置文件application.properties中的配置属性等。properties后置处理器就是从其中找到匹配的配置项绑定到bean的属性上去的。
属性绑定是有覆盖性的,操作系统环境变量可以覆盖配置文件application.properties, java系统属性可以覆盖操作系统环境变量。更多的可以参考官网 https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/reference/htmlsingle/#boot-features-external-config

重点给大家介绍springboot配置数据源无法读取配置信息的问题及解决方案,具体内容如下:

出现的问题:

利用ConfigurationProperties注解配置数据源发现读取的数据库配置信息全部为null。

@Bean(name = "pq")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSourcePq() {
        return DataSourceBuilder.create().build();     
    }
#配置信息
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    #MySQL配置
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/graduate?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: root

debug过后发现配置文件属性没有读取成功

解决方法:

@Bean(name = "pq")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSourcePq() {
        //return DataSourceBuilder.create().build();
        return new DruidDataSource();
    }

出现问题原因:

暂时还不清楚,第一次使用这样的方式配置数据源,可能有些细节没有注意到。

以上就是解决springboot利用ConfigurationProperties注解配置数据源无法读取配置信息问题的详细内容,更多关于springboot配置数据源无法读取配置信息的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot如何使用过滤器进行XSS防御

    SpringBoot如何使用过滤器进行XSS防御

    想对全局的请求都进行XSS防御可以使用servlet中的过滤器或者spring mvc中的拦截器,下面我们就来看看如何使用servlet中的过滤器进行XSS防御吧
    2024-11-11
  • Java的logback自定义日志脱敏组件详解

    Java的logback自定义日志脱敏组件详解

    这篇文章主要介绍了Java的logback自定义日志脱敏组件详解,一个项目在书写了很多打印日志的代码,但是后面有了脱敏需求,如果我们去手动改动代码,会花费大量时间,如果引入本组件,完成配置即可轻松完成脱敏,需要的朋友可以参考下
    2023-11-11
  • SpringBoot中配置log4j2日志详解

    SpringBoot中配置log4j2日志详解

    这篇文章主要介绍了SpringBoot中配置log4j2日志详解,Apache Log4j2 是对原先的 Log4j 项目的升级版本,参考了 logback 的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,需要的朋友可以参考下
    2023-11-11
  • SpringBoot如何监控Redis中某个Key的变化(自定义监听器)

    SpringBoot如何监控Redis中某个Key的变化(自定义监听器)

    这篇文章主要介绍了SpringBoot如何监控Redis中某个Key的变化(自定义监听器),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Java中EnumMap代替序数索引代码详解

    Java中EnumMap代替序数索引代码详解

    这篇文章主要介绍了Java中EnumMap代替序数索引代码详解,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • SpringBoot中添加监听器及创建线程的代码示例

    SpringBoot中添加监听器及创建线程的代码示例

    这篇文章主要介绍了SpringBoot中如何添加监听器及创建线程,文中有详细的代码示例,具有一定的参考价值,需要的朋友可以参考下
    2023-06-06
  • Java工厂模式的深入了解

    Java工厂模式的深入了解

    这篇文章主要为大家介绍了Java工厂模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Java Calendar类的使用总结实例

    Java Calendar类的使用总结实例

    这篇文章主要介绍了Java Calendar类的使用总结实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 使用 Spring Boot 2.0 + WebFlux 实现 RESTful API功能

    使用 Spring Boot 2.0 + WebFlux 实现 RESTful API功能

    什么是 Spring WebFlux, 它是一种异步的, 非阻塞的, 支持背压(Back pressure)机制的Web 开发框架.下面通过本文给大家介绍使用 Spring Boot 2.0 + WebFlux 实现 RESTful API功能,需要的朋友参考下吧
    2018-01-01
  • 详解Mybatis 传递参数类型为List的取值问题

    详解Mybatis 传递参数类型为List的取值问题

    这篇文章主要介绍了详解Mybatis 传递参数类型为List的取值问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10

最新评论