前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spring 注解@ConfigurationProperties

Spring 注解@ConfigurationProperties

原创
作者头像
HLee
修改于 2021-09-01 03:05:27
修改于 2021-09-01 03:05:27
2.2K00
代码可运行
举报
文章被收录于专栏:房东的猫房东的猫
运行总次数:0
代码可运行

简介

Spring源码中大量使用了ConfigurationProperties注解,比如server.port就是由该注解获取到的,通过与其他注解配合使用,能够实现Bean的按需配置。

该注解有一个prefix属性,通过指定的前缀,绑定配置文件中的配置,该注解可以放在类上,也可以放在方法上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ConfigurationProperties {}

可以从注解说明中看到,当将该注解作用于方法上时,如果想要有效的绑定配置,那么该方法需要有@Bean注解且所属Class需要有@Configuration注解。

作用于方法

配置文件内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#数据源
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

Java代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Configuration
public class DruidDataSourceConfig {
    /**
     * DataSource 配置
     * @return
     */
    @ConfigurationProperties(prefix = "spring.datasource.druid.read")
    @Bean(name = "readDruidDataSource")
    public DataSource readDruidDataSource() {
        return new DruidDataSource();
    }


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

相信大家肯定了解@Value注解,它可以通过全限定名进行配置的绑定,这里的ConfigurationProperties其实就类似于使用多个@Value同时绑定,绑定的对象就是DataSource类型的对象,而且是隐式绑定的,意味着在配置文件编写的时候需要与对应类的字段名称相同,比如上述spring.datasource.druid.write.url=jdbc:mysql://localhost:3306/jpa,当然了,你也可以随便写个配置,比如spring.datasource.druid.write.uuu=www.baidu.com,此时你只需要在注解中加上以下参数即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
boolean ignoreInvalidFields() default false;

作用于Class类及其用法

配置文件内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

Java代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@ConfigurationProperties(prefix = "spring.datasource")
@Component
@Getter
@Setter
public class DatasourcePro {

    private String url;

    private String username;

    private String password;

    // 配置文件中是driver-class-name, 转驼峰命名便可以绑定成
    private String driverClassName;

    private String type;
}

用法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@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. @ConfigurationProperties@value 有着相同的功能,但是@ConfigurationProperties的写法更为方便。
  2. @ConfigurationPropertiesPOJO类的命名比较严格,因为它必须和prefix的后缀名要一致, 不然值会绑定不上, 特殊的后缀名是“driver-class-name”这种带横杠的情况,在POJO里面的命名规则是下划线转驼峰就可以绑定成功,所以就是 “driverClassName”

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Springboot整合Druid数据源
Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。
暴躁的程序猿
2022/03/23
3620
Springboot整合Druid数据源
Spring-Blog:个人博客(一)-Mybatis 读写分离
概述: 2018,在平(tou)静(lan)了一段时间后,开始找点事情来做。这一次准备开发一个个人博客,在开发过程之中完善一下自己的技术。本系列博客只会提出一些比较有价值的技术思路,不会像写流水账一样记录开发过程。   技术栈方面,会采用Spring Boot 2.0 作为底层框架,主要为了后续能够接入Spring Cloud 进行学习拓展。并且Spring Boot 2.0基于Spring5,也可以提前预习一些Spring5的新特性。后续技术会在相应博客中提出。   项目GitHub地址:https:/
九灵
2018/03/09
1.1K0
Spring-Blog:个人博客(一)-Mybatis 读写分离
第六章-Spring Boot 数据访问
默认是用org.apache.tomcat.jdbc.pool.DataSource作为数据源;
李昂君
2021/12/24
3100
第六章-Spring Boot 数据访问
SpringBoot2----数据访问
DataSourceTransactionManagerAutoConfiguration: 事务管理器的自动配置
大忽悠爱学习
2021/11/15
3750
微服务架构Day07-SpringBoot之数据处理
4.DataSourceInitializerInvoker继承自ApplicationListener : 作用: 4.1:创建建表语句 4.2:运行插入数据的语句sql语句 默认只需要将文件命名为:
攻城狮Chova
2022/01/22
6630
sprongboot配置druid数据源使用druid监控
首先它是一个数据库连接池,负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
废江_小江
2022/09/05
9720
Springboot 系列(九)使用 Spring JDBC 和 Druid 数据源监控
作为一名 Java 开发者,相信对 JDBC(Java Data Base Connectivity)是不会陌生的,JDBC作为 Java 基础内容,它提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。下面演示下 Springboot 中如何使用 JDBC 操作,并配置使用 Druid 连接池,体验 Druid 对数据库操作强大的监控和扩展功能。Alibaba-Durid 官方手册点这里。
未读代码
2019/11/04
1.6K0
SpringBoot Jpa 多数据源动态切换
在大型应用程序中,配置主从数据库并使用读写分离是常见的设计模式。常用的实现方式是使用数据库中间件,此文介绍如何通过编写代码的方式实现多数据源的配置和动态切换。核心是使用Spring 内置的 AbstractRoutingDataSource 这个抽象类,它可以把多个数据源配置成一个Map,然后,根据不同的key返回不同的数据源。
BUG弄潮儿
2022/02/10
1.6K0
快速学习SpringBoot-Java配置
在入门案例中,我们没有任何的配置,就可以实现一个SpringMVC的项目了,快速、高效!
cwl_java
2020/02/11
3110
Spring Boot(3)-使用mysql详解
Spring Boot构建的Web应用中,基于MYSQL数据库的几种数据库连接方式进行介绍,包括JDBC、JPA、MyBatis、多数据源和事务。
黄规速
2022/04/14
4.3K0
Spring Boot(3)-使用mysql详解
springboot(2)--数据源
springboot简化了我们构建应用的难度,把很多功能帮我们打包,然后我们
叔牙
2020/11/19
7060
springboot(2)--数据源
spring-boot使用aop进行多数据源切换
创建一个spring boot项目,并引入druid mysql aop等相关依赖
earthchen
2020/09/24
1.2K0
芋道 Spring Boot 数据库连接池入门
在我们的项目中,数据库连接池基本是必不可少的组件。在目前数据库连接池的选型中,主要是
芋道源码
2020/04/21
1.8K0
芋道 Spring Boot 数据库连接池入门
Spring Boot从入门到精通-mybatis多数据源
启动项目,调用controller中的接口,从控制台的输出可以看到数据源已经实现了动态切换。
我的小熊不见了丶
2019/05/22
5230
Spring Boot集成数据源
Spring Boot为创建数据库的数据源提供了非常好的支持。不需要编写任何额外的代码来在Spring Boot中创建数据源(DataSource)。只需添加依赖项并执行配置详细信息就足以创建DataSource并连接数据库。在本章中,将使用Spring Boot JDBC驱动程序连接来连接数据库。首先,需要在构建配置文件中添加Spring Boot Starter JDBC依赖项。Maven用户可以在pom.xml 文件中添加以下依赖项。
黑洞代码
2021/12/04
8680
Spring Boot集成数据源
SpringBoot简介、SpringBoot 入门程序搭建、与JDBC、Druid、Mybatis和SpringData JPA的整合
spring boot并不是一个全新的框架,它不是spring解决方案的一个替代品,而是spring的一个封装。所以,你以前可以用spring做的事情,现在用spring boot都可以做。它是简化Spring应用开发的一个框架,是整个Spring技术栈的一个大整合,是J2EE开发的一站式解决方案。使用springboot,你可以达到快速开发的目的,不像以前使用spring的时候,即使整合一个小小的web项目,也要进行很多相关的配置才能使用,效率低下。
全栈程序员站长
2021/09/29
4310
SpringBoot简介、SpringBoot 入门程序搭建、与JDBC、Druid、Mybatis和SpringData JPA的整合
SpringBoot+Thymeleaf+集成Swagger2+Druid数据监控
为所有 Spring 的开发者提供一个非常快速的、广泛接受的入门体验 开箱即用,通过简单的配置,简化了以前复杂配置操作 提供了一些大型项目中常见的非功能性特性,如内嵌服务器、安全、指标,健康检测、外部化配置等 无需 XML 配置
JokerDJ
2023/11/27
4630
SpringBoot+Thymeleaf+集成Swagger2+Druid数据监控
【Spring Boot】009-Spring Boot整合Druid数据源
Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池;
訾博ZiBo
2025/01/06
1070
【Spring Boot】009-Spring Boot整合Druid数据源
SpringBoot一些配置文件
Thymeleaf # 关闭模板缓存 spring.thymeleaf.cache=false # Thymeleaf页面位置 spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffix=.html MVC自定义 添加@Configuration注解 package com.example.SpringBoot.config; import org.springframework.context.annotation.Conf
SakuraTears
2022/01/13
3520
SpringBoot一些配置文件
SpringBoot与数据访问
​ 1. 默认使用 com.zaxxer.hikari.HikariDataSource 作为数据源(springBoot 的版本为:2.3.3);
OY
2022/03/12
4330
SpringBoot与数据访问
推荐阅读
相关推荐
Springboot整合Druid数据源
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验