基于@ConfigurationProperties的三种用法及说明

 更新时间:2026年06月04日 08:35:04   作者:我叫晨曦啊  
SpringBoot配置属性绑定详解,介绍@Component若您配置类、@ConfigurationProperties绑定属性及三种常见应用场景,附带代码示例与测试步骤

@ConfigurationProperties

告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定,若进行绑定,首先这个类要受Spring管理,spring才能操作里面的数据,有三种使用场景,而通常情况下使用的最多的只是其中的一种场景。

本文介绍一下三种场景的使用情况,若有错误还请各位大佬批评指正!

第一种

@Component和@ConfigurationProperties放在bean定义类上。

1、新建application.yml配置文件

person:
  id: 1
  name: 张三

2、定义一个bean

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.io.Serializable;

@Component
@ConfigurationProperties(prefix = "person")
@Data
public class Person implements Serializable {
    private Integer id;
    private String name;
}

3、测试

import com.gwm.pojo.Person;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class SpringBootConfigTest {

    @Autowired
    private Person person;
    
    @Test
    public void  test01(){
        System.out.println(person.getId() +"==="+ person.getName());
    }
}

4、结果

第二种

@ConfigurationProperties和@Bean注解在配置类的Bean定义方法上。

1、配置文件添加

dataSource:
  url: jdbc:mysql://localhost:3306/springboottest?allowMultiQueries=true&serverTimezone=Asia/Shanghai

2、新建配置类

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TestConfig {
	// 注意:配置文件中是大小写混合的,prefix中要全部小写,否则会报错
    @ConfigurationProperties(prefix = "datasource")
    @Bean
    public DruidDataSource duidDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }
}

3、测试

import com.alibaba.druid.pool.DruidDataSource;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class SpringBootConfigTest {
    @Autowired
    private DruidDataSource druidDataSource;

    @Test
    public void  test02(){
        System.out.println(druidDataSource.getUrl());
    }
}

4、结果

第三种

@ConfigurationProperties注解到普通类,然后启动类添加@EnableConfigurationProperties定义为Bean。此处以第一种的代码为例,做修改即可。

1、注释@Component注解

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.io.Serializable;

//@Component
@ConfigurationProperties(prefix = "person")
@Data
public class Person implements Serializable {
    private Integer id;
    private String name;
}

2、启动类新加注解

import com.gwm.pojo.Person;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;

// 注解后面要加上开启配置的类----->类名.class
@EnableConfigurationProperties({Person.class})
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

3、测试

import com.gwm.pojo.Person;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class SpringBootConfigTest {

    @Autowired
    private Person person;
    
    @Test
    public void  test01(){
        System.out.println(person.getId() +"==="+ person.getName());
    }
}

4、结果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Spring AOP 实现主从读写分离

    详解Spring AOP 实现主从读写分离

    本篇文章主要介绍了Spring AOP 实现主从读写分离,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 浅析Java如何优雅的设计接口状态码和异常

    浅析Java如何优雅的设计接口状态码和异常

    HTTP协议里定义了一系列的状态码用来表明请求的状态,如常用的200表示请求正常,404表示请求的资源不存在,所以本文就来和大家讨论一下如何优雅的设计接口状态码和异常,感兴趣的可以了解下
    2024-03-03
  • Java面向对象基础教学(二)

    Java面向对象基础教学(二)

    这篇文章主要介绍了Java的面相对象编程思想,包括类对象方法和封装继承多态等各个方面的OOP基本要素,非常推荐,需要的朋友可以参考下,希望可以对你有所帮助
    2021-07-07
  • Java中split根据"."分割字符串问题举例

    Java中split根据"."分割字符串问题举例

    split表达式其实就是一个正则表达式,* | . ^ 等符号在正则表达式中属于一种有特殊含义的字符,下面这篇文章主要给大家介绍了关于Java中split根据“.“分割字符串问题的相关资料,需要的朋友可以参考下
    2022-10-10
  • java中常用排序方法有哪些详解

    java中常用排序方法有哪些详解

    排序算法经过了很长时间的演变,产生了很多种不同的方法,这篇文章主要介绍了java中常用排序方法有哪些的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07
  • MyBatis-Plus中的LambdaQuery用法实例详解

    MyBatis-Plus中的LambdaQuery用法实例详解

    LambdaQueryWrapper是MyBatis-Plus的类型安全查询工具,通过Lambda表达式简化条件构建,避免硬编码字段名,提升代码可读性、维护性及重构友好性,适用于单表查询场景,本文给大家介绍MyBatis-Plus中的LambdaQuery用法,感兴趣的朋友一起看看吧
    2025-07-07
  • IDEA新UI如何移动类路径工具栏到顶部

    IDEA新UI如何移动类路径工具栏到顶部

    文章介绍了IDEA更新新UI后,类路径工具栏放到底部的问题,并提供了解决方案,此外,还提到了如何关闭主菜单背景色的方法
    2025-01-01
  • java的io操作(将字符串写入到txt文件中)

    java的io操作(将字符串写入到txt文件中)

    这篇文章主要介绍了java的io操作示例,将字符串写入到txt文件中,需要的朋友可以参考下
    2014-04-04
  • 深入理解Java之jvm启动流程

    深入理解Java之jvm启动流程

    这篇文章主要介绍了深入理解Java之jvm启动流程,文章内容讲解的很清晰,有对这方面感兴趣的同学可以研究下
    2021-02-02
  • Java Agent 动态修改字节码详情

    Java Agent 动态修改字节码详情

    这篇文章主要介绍了Java Agent动态修改字节码的相关资料,需要的朋友可以参考下面文章具体的内容
    2021-09-09

最新评论