Spring中@ConfigurationProperties的用法解析

 更新时间:2023年11月07日 11:19:31   作者:张紫娃  
这篇文章主要介绍了Spring中@ConfigurationProperties的用法解析,传统的Spring一般都是基本xml配置的,后来spring3.0新增了许多java config的注解,特别是spring boot,基本都是清一色的java config,需要的朋友可以参考下

@ConfigurationProperties的用法

作用: 通过与其他注解配合使用,能够实现Bean的按需配置 可以放哪里: 类上,方法上

作用于方法

使用条件: 当将@ConfigurationProperties作用于方法上时,该方法需要有@Bean且所属类需要有@Configuration 使用场景: 比较常见的就是配置读写分离的场景

spring.datasource.druid.write.url=jdbc:mysql://localhost:3306/jpa
spring.datasource.druid.write.username=root
spring.datasource.druid.write.password=1
spring.datasource.druid.write.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.druid.read.url=jdbc:mysql://localhost:3306/jpa
spring.datasource.druid.read.username=root
spring.datasource.druid.read.password=1
spring.datasource.druid.read.driver-class-name=com.mysql.jdbc.Driver

@Configuration
public class DruidDataSourceConfig {

    @Bean(name = "readDruidDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.druid.read")
    public DataSource readDruidDataSource() {
        return new DruidDataSource();
    }

    @Primary
    @Bean(name = "writeDruidDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.druid.write")
    public DataSource writeDruidDataSource() {
        return new DruidDataSource();
    }
}

作用于类

使用场景: 配置数据库

# 配置文件内容
spring.datasource.url=jdbc:mysql://127.0.0.1:8888/test?useUnicode=false&autoReconnect=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
@ConfigurationProperties(prefix = "spring.datasource")
@Component
public class DatasourcePro {
    private String url;
    private String username;
    private String password;
    private String driverClassName; // 配置文件中是driver-class-name, 转驼峰命名便可以绑定成
    private String type;
    // standard getters and setters
}
@Controller
@RequestMapping(value = "/config")
public class ConfigurationPropertiesController {
    @Autowired
    private DatasourcePro datasourcePro;
    @RequestMapping("/test")
    @ResponseBody
    public Map<String, Object> test(){
        Map<String, Object> map = new HashMap<>();
        map.put("url", datasourcePro.getUrl());
        map.put("userName", datasourcePro.getUsername());
        map.put("password", datasourcePro.getPassword());
        map.put("className", datasourcePro.getDriverClassName());
        map.put("type", datasourcePro.getType());
        return map;
    }
}

总结

1、该注解有一个 prefix 属性,根据指定的前缀来绑定配置文件中的配置

2、@ConfigurationProperties 和 @value 有着相同的功能,@ConfigurationProperties 其实就类似于使用多个 @Value 同时绑定,绑定的是对象;

3、 @ConfigurationProperties 修饰的POJO类的命名比较严格,必须和 prefix 的后缀名一致, 不然值会绑定不上。但是配置文件里蛇形命名变量 “driver-class-name” 和 POJO里面转驼峰 命名属性 “driverClassName” 可以绑定成功。

到此这篇关于Spring中@ConfigurationProperties的用法解析的文章就介绍到这了,更多相关@ConfigurationProperties的用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Java数据库连接JDBC基础知识(操作数据库:增删改查)

    详解Java数据库连接JDBC基础知识(操作数据库:增删改查)

    这篇文章主要介绍了详解Java数据库连接JDBC基础知识(操作数据库:增删改查),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • java 数据结构之删除链表中的元素实例代码

    java 数据结构之删除链表中的元素实例代码

    这篇文章主要介绍了java 数据结构之删除链表中的元素实例代码的相关资料,需要的朋友可以参考下
    2017-01-01
  • SpringBoot中动态注入Bean的技巧分享

    SpringBoot中动态注入Bean的技巧分享

    在 Spring Boot 开发中,动态注入 Bean 是一种强大的技术,它允许我们根据特定条件或运行时环境灵活地创建和管理 Bean,本文将介绍 Spring Boot 中三种动态 Bean 注入技巧,需要的可以参考一下
    2025-06-06
  • Java ArrayList 实现实例讲解

    Java ArrayList 实现实例讲解

    ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。这篇文章主要介绍了java ArrayList 实现的相关资料,需要的朋友可以参考下
    2016-11-11
  • 微信小程序与Java后端接口交互

    微信小程序与Java后端接口交互

    本文主要介绍了微信小程序与Java后端接口交互,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 前端如何调用后端接口进行数据交互详解(axios和SpringBoot)

    前端如何调用后端接口进行数据交互详解(axios和SpringBoot)

    一般来讲前端不会给后端接口,而是后端给前端接口的情况比较普遍,下面这篇文章主要给大家介绍了关于前端如何调用后端接口进行数据交互的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • 详解Java文件下载的几种实现方式

    详解Java文件下载的几种实现方式

    这篇文章主要介绍了详解Java文件下载的几种实现方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • SpringBoot+hutool实现图片验证码

    SpringBoot+hutool实现图片验证码

    本文主要介绍了SpringBoot+hutool实现图片验证码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Java设计模式之责任链模式详解

    Java设计模式之责任链模式详解

    这篇文章主要介绍了Java设计模式之责任链模式详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • java从命令行获取数据的三种方式代码实例

    java从命令行获取数据的三种方式代码实例

    这篇文章主要介绍了java从命令行获取数据的三种方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12

最新评论