iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >SpringBoot中怎么使用@ConfigurationProperties
  • 472
分享到

SpringBoot中怎么使用@ConfigurationProperties

2023-07-04 14:07:50 472人浏览 泡泡鱼
摘要

这篇文章主要介绍“SpringBoot中怎么使用@ConfigurationProperties”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springBoot中怎么使用@Configuratio

这篇文章主要介绍“SpringBoot中怎么使用@ConfigurationProperties”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springBoot中怎么使用@ConfigurationProperties”文章能帮助大家解决问题。

    @ConfigurationProperties

    @ConfigurationProperties告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;要进行绑定,首先这个类要受Spring管理,spring才能操作里面的数据。

    使用场景

    场景一:使用@ConfigurationProperties和@Component注解到bean定义类上.

    注意,这里是到bean定义类上,这里的bean指的是受Spring管理的bean,而@Component注解就是把一个类当成一个bean注册到Spring容器中。

    自定义一个配置文件:

    book:  bookName: Spring技术内幕  price: 36.57

    定义一个bean:

    package com.example.entity;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;package com.example.entity;import lombok.Data;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;@Component//交给Spring容器管理@ConfigurationProperties(prefix = "book")//加载配置文件,配置前缀表达式@Datapublic class Book {    //书名    private String bookName;    //价格    private double price;}

    注意看,此时是有@Component注解的,说明这个bean受Spring容器管理。

    测试

    package com.example.springbootconfigureadvanced;import com.example.entity.Book;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;@SpringBootTestclass SpringBootConfigureAdvancedApplicationTests {    @Autowired    Book book;    @Test    void contextLoads() {    }    @Test    public void toTest(){        System.out.println(book.getPrice());    }}

    结果:

    SpringBoot中怎么使用@ConfigurationProperties

    此时如果把@component去掉:

    SpringBoot中怎么使用@ConfigurationProperties

    直接爆红了,语法都不给你通过,这说明了要@ConfigurationProperties生效,被注入的bean应该要受Spring管理或者说在Spring容器中。

    场景二:使用@ConfigurationProperties和@Bean注解在配置类的Bean定义方法上

    解释一下:如果我们使用注解开发,一般会把第三方技术写成一个配置类,然后使用@ConfigurationProperties和@Bean注解对其进行注入,从而实现对第三方属性的绑定。

    注意这里的两个注解使用在方法上,但是要绑定,这个类必须得让Spring管理,所以需要一个注解来显示这个类,让Spring能够扫描到,以便与可以把其添加到容器中。

    新建一个配置类:

    package com.example.config;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//声明一个类为配置类,用于取代bean.xml配置文件注册bean对象。public class MyConfig {    @ConfigurationProperties(prefix = "datasource")    @Bean    public DruidDataSource dataSource(){        DruidDataSource dataSource = new DruidDataSource();        return dataSource;    }}

    添加配置:

    dataSource:  url: jdbc:mysql://127.0.0.1:3306/springBoot?serverTimezone=UTC

    注意这里并没有用spring.dataSource格式,如果是那样,倒不如直接在配置文件配好,瞎整配置类干啥。

    测试:

    package com.example;import com.alibaba.druid.pool.DruidDataSource;import com.example.entity.Book;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplicationpublic class SpringBootConfigureAdvancedApplication {    public static void main(String[] args) {        //获取应用上下文配置        ConfigurableApplicationContext context = SpringApplication.run(                SpringBootConfigureAdvancedApplication.class, args);        DruidDataSource dataSource = context.getBean(DruidDataSource.class);        System.out.println(dataSource.getUrl());    }}

    这里我们直接在SpringBoot应用类获取应用上下文配置即可获取容器中的bean,不用再费劲去测试类整一堆东西;

    验证:

    SpringBoot中怎么使用@ConfigurationProperties

    解释一下,不然不清楚:在上面配置类MyConfig中设置了一个方法,返回值就是数据源对象,就是说使用方法创建了数据源对象,然后使用@Bean把这个方法定义为一个受Spring管理的bean,再使用@ConfigurationProperties(prefix = “datasource”)加载配置文件进入数据源对象,但是这样还不够,这个类Spring并不能扫描到,所以使用@Configuration把这个类定义为配置类,这样就可以加载这个类。

    在这里没有的配置文件中的dataSource只是一个普通的配置。

    场景三:使用@ConfigurationProperties注解到普通类,然后再通过@EnableConfigurationProperties定义为Bean。

    先说一下@EnableConfigurationProperties的用法:这个注解相当于一个开关,用来开启配置的绑定,使用这个注解,不用把类手动交给Spring加载成bean,直接在这个注解后面加上你要开启配置的类的类名.class即可,这个注解会告诉Spring把类加载成bean,并放入容器中。

    说白了就是让@ConfigurationProperties生效。

    还是上面的例子:

    没加@EnableConfigurationProperties、也没有加其他制成bean的注解:

    SpringBoot中怎么使用@ConfigurationProperties

    加上@EnableConfigurationProperties

    测试:

    SpringBoot中怎么使用@ConfigurationProperties

    小结

    注意三种使用情况,特别是第三种,在后面的原理篇会大量出现

    @EnableConfigurationProperties是一个开关,用来开启被@ConfigurationProperties注解注释而没有其他生成bean注解的类与配置文件注入的开关。

    宽松绑定/松散绑定

    @ConfigurationProperties绑定属性支持属性名宽松绑定

    总的概况就是,只要配置文件的配置的字母数量和字母与被绑定的bean的prefix(前缀)相同都可以绑定,但是注意,prefix的内容全部为小写。配置文件可以出现大小写不一致,甚至可以出现各种符号(非abcd这些)。

    绑定前缀名命名规范:仅能使用纯小写字母、数字、下划线作为合法的字符

    举例:配置文件

    dataSource:  url: jdbc:Mysql://127.0.0.1:3306/springBoot?serverTimezone=UTC

    类中:

    SpringBoot中怎么使用@ConfigurationProperties

    可以看到,虽然这里的前缀和配置文件完全相同,但是还是不正确的,prefix必须全为小写。

    说完了吗?说完了,其他的试一下就可以,一通百通。

    啊,还有就是:

    宽松绑定不支持注解@Value引用单个属性的方式

    关于“SpringBoot中怎么使用@ConfigurationProperties”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: SpringBoot中怎么使用@ConfigurationProperties

    本文链接: https://www.lsjlt.com/news/345486.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • SpringBoot中怎么使用@ConfigurationProperties
      这篇文章主要介绍“SpringBoot中怎么使用@ConfigurationProperties”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot中怎么使用@Configuratio...
      99+
      2023-07-04
    • SpringBoot @ConfigurationProperties注解的简单使用
      目录源码使用 源码 @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNT...
      99+
      2024-04-02
    • SpringBoot中@ConfigurationProperties 配置绑定
      SpringBoot底层的一个功能 : @ConfigurationProperties @ConfigurationProperties 配置绑定 来举一个场景例子 : 我们习惯...
      99+
      2024-04-02
    • SpringBoot中@ConfigurationProperties注解怎么实现配置绑定
      本篇内容介绍了“SpringBoot中@ConfigurationProperties注解怎么实现配置绑定”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
      99+
      2023-06-30
    • SpringBoot中注解@ConfigurationProperties与@Value的区别与使用详解
      目录注解@ConfigurationProperties 注解@Value 区别松散语法绑定: SpEl语法表示: JSR303数据校验: 复杂类型封装: 配置文件注入值数据校验 注...
      99+
      2024-04-02
    • springboot如何使用@ConfigurationProperties封装配置文件
      使用@ConfigurationProperties封装配置文件 业务场景: 把配置文件的信息,读取并自动封装成实体类,可以使用@ConfigurationProperties,把同...
      99+
      2024-04-02
    • springboot怎么通过@Value,@ConfigurationProperties获取配置
      本篇内容主要讲解“springboot怎么通过@Value,@ConfigurationProperties获取配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot怎么通过@V...
      99+
      2023-06-29
    • Java怎么使用ConfigurationProperties获取yml中的配置
      这篇文章主要介绍“Java怎么使用ConfigurationProperties获取yml中的配置”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java怎么使用ConfigurationProper...
      99+
      2023-06-29
    • Springboot中@ConfigurationProperties注解出现报错如何解决
      今天就跟大家聊聊有关Springboot中@ConfigurationProperties注解出现报错如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。注解报错:1.我们需要把j...
      99+
      2023-06-05
    • SpringBoot中banner怎么使用
      这篇文章主要介绍“SpringBoot中banner怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot中banner怎么使用”文章能帮助大家解决问题。制作自己的banner第...
      99+
      2023-06-08
    • springboot中redis怎么使用
      在Spring Boot中使用Redis,可以使用以下步骤:1. 添加依赖:在`pom.xml`文件中添加Redis的依赖:```x...
      99+
      2023-09-04
      springboot redis
    • SpringBoot中怎么使用FreeMarker
      这篇文章主要介绍“SpringBoot中怎么使用FreeMarker”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot中怎么使用FreeMarker...
      99+
      2024-04-02
    • SpringBoot中@SessionAttributes怎么使用
      本文小编为大家详细介绍“SpringBoot中@SessionAttributes怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot中@SessionAttributes怎么使用”文章能帮助大家解决疑惑,下面跟着小...
      99+
      2023-07-02
    • SpringBoot中怎么使用WebSocket
      在Spring Boot中使用WebSocket可以通过以下步骤实现: 首先添加WebSocket依赖: 在pom.xml文件中添...
      99+
      2024-03-07
      SpringBoot WebSocket
    • SpringBoot中@ConfigurationProperties实现配置自动绑定的方法
      目录代码构造器绑定结合@PropertySource代码 pom.xml: <xml version="1.0" encoding="UTF-8"> <projec...
      99+
      2024-04-02
    • 怎么在SpringBoot中使用nacos
      怎么在SpringBoot中使用nacos?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、什么是nacosnacos支持基于dns和基于rpc的服务发现,可以作为spri...
      99+
      2023-06-15
    • Java如何使用ConfigurationProperties获取yml中的配置
      目录使用ConfigurationProperties获取yml的配置使用方法@ConfigurationProperties获取不到配置文件属性值问题原因就是使用Configura...
      99+
      2024-04-02
    • Banner怎么在SpringBoot中使用
      今天就跟大家聊聊有关Banner怎么在SpringBoot中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Spring Boot在启动项目时,控制台会打印一个Spring的log...
      99+
      2023-05-30
      springboot banner
    • rabbitmq怎么在springboot中使用
      rabbitmq怎么在springboot中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。概述RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的...
      99+
      2023-05-30
      springboot rabbitmq
    • 怎么在Springboot中使用mybatis
      今天就跟大家聊聊有关怎么在Springboot中使用mybatis,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前期工作1.导入mybatis整合依赖<!-- &nb...
      99+
      2023-06-14
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作