SpringBoot——Bean属性绑定

news2024/12/17 17:47:44

简单介绍:

之前我们介绍过我们如何在Bean中获取配置文件的方式,就是通过将类注册到Spring容器中,然后通过@ConfigurationProperties()注解,这个注解有一个参数叫做prefix,参数的值就是我们在配置文件中配置的一组数据的对象的名字,然后就可以获取这一组对象的值装填到我们的对象中,那么这一节我们来看看如何做出更多的操作。

第三方Bean的绑定:

在之前我们是自己写了一个类,然后注册到容器中,但是如果我们要为一个不是自己写的类,而是由第三方提供的类,肯定不能打开源码去将其赋值或者去将其添加注解注册到Spring容器中,那么就需要使用注解的方式:

除了使用@Component将我们的类注册到容器中,还可以使用引入的方式将我们的类在使用的时候注册进容器中:

这是我们之前做过的一个案例,就是将配置文件中的配置项读取到类中,这个类中使用了@ConfigurationProperties注解引入配置信息,使用了@Component进行注册,如果我们去掉@Component注解,那么这个程序就会报错:

 

报错的原因很简单,就是因为它自动装填是在Spring容器中进行的,你现在要装填的类并不在我们的Spring容器中,所以就会报错,此时我们需要在引导类中另一个注解: 使用@EnableConfigurationProperties()注解,这个注解有一个值就是你自动注入的时候的类的class文件,那么他就会自动将这个类注册进容器中,然后这边就不会报错了:

这样做有什么好处呢,好处就是如果我们不引用这个配置文件,则Spring不会去管理它,就节省了我们的Spring的管理成本,当我们使用的时候,我们引入这个文件,Spring就会去管理他。如果使用@Component注解,则无论会不会用到,他都会被注册到容器中。

然后说回正题,如何给我们的第三方类去填充配置文件中的数据呢?首先我们先引入一个第三方类,就以druidDataSource为例:

这个DruidDataSource是第三方为我们提供的,所以它的参数肯定不是我们手动去填写的,并且它里面现在肯定是空的,我们可以获取以下里面的属性值先来看一下:

当程序运行之后,他会在控制台上输出DruidDataSoruce的url的值:

 

这个小小的null就表示我们的程序内部没有任何的数据,现在我们仅使用一个注解就能为其填充数据:

 这个和之前我们为自己写的类添加数据的注解是一样的,一摸一样的,只不过它使用在了@Bean注解的下面,接下来我们来看运行结果,他就会输出我们在配置文件中编写的值:

 这样我们就完成了给第三方的Bean填充配置文件中的值的过程,其实很简单,就是将之前我们给类赋值时候的注解写在@Bean注解的方法上,那么这一组数据就会赋值到方法的返回值类中。

松散绑定:@ConfigurationProperties在绑定属性的时候支持多种模式匹配

我们在配置文件中书写属性名的时候,无论写成任何的格式都可以绑定到类中:

这是之前的配置文件的数据,现在我们改一下它的属性名:

然后我们执行程序,看到依然可以输出结果出来: 

这里只是演示一下,其实除了大写,你就算是小写带大写,大写带小写,大写带下划线,小写带下划线,一个字母隔一个下划线他都可以识别,这种对格式不是很固定的绑定方式就是松散绑定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/554988.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

成为移动测试高手!本文教你掌握移动APP测试的关键知识和技巧,提升测试水平,轻松获取高薪工作!(上)

目录 引言 首先搭建android-sdk环境 一.兼容性测试【原生APP】 1.WEB 2.APP 2.1操作系统 2.2分辨率 2.3不同厂家 2.4网络类型 (1)h5小程序类型: 如何测试APP在不同手机的情况 如何测试弱网络 (2).小程序 二.功能测试点 (另外)…

备战2023年秋招,一套吃透全部技术栈.....

今天跟大家分享这份测试工程师全套面试攻略包含了软件测试基础 、MySQL基础、Liunx、web测试、接口测试、App测试、Python、selenium、管理工具、性能测试、LordRunner、计算机网络、组成原理、数据结构与算法、ab测试等。这些都是我在各个大厂总结出来的面试真题,很…

SSM框架-Spring的学习

1.Spring简介 Spring是什么(理解) 官网地址: https://spring.io/ ​ Spring框架由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给…

多个Filter的执行顺序 | 职责链模式应用

文章目录 前言一、多个Filter的执行顺序实操1. 配置web.xml方式注册Filter结论: 2. 注解方式注册Filter结论: 二、职责链模式的应用1. 回顾职责链模式2. Filter职责链模式的应用 总结 前言 Filter(过滤器) 是 Java Servlet 规范中定义的一种组件&#xf…

【计算机组成】三分钟了解顺序存储、直接存储、随机存储和相联存储的区别

一.按地址访问和按内容访问的区别 按地址访问(顺序存储、直接存储和随机存储):我知道这个数据存在哪个地址中,现在我把这个地址给你,麻烦你帮我找出我要的数据来 按内容访问(相联存储)&#xff…

Netty编解码机制(一)

1.编码和解码基本介绍 1>.编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码; 2>.codec(编解码器)的组成部分有两个: decoder(解码器)和 encoder(编码器).encoder(编码器)负责把业务数据转换成字节码数据,而…

BurpSuite—-Scanner模块(漏洞扫描)

本文主要BurpSuite—-Scanner模块(漏洞扫描)介绍的相关内容 关于BurpSuite的安装可以看一下之前这篇文章: http://t.csdn.cn/cavWt 一、简介 Burp Scanner 是一个进行自动发现 web 应用程序的安全漏洞的工具。它是为渗透测试人员设计的,并且它和你现有…

Revit幕墙:这些命令在幕墙嵌板中的妙用及快速幕墙

一、Revit中这些命令在幕墙嵌板中的妙用 在我们做幕墙时,通常会有不同种类的幕墙,比如材质不同,颜色不同。这时我们就需要去选中嵌板进行替换新样式的嵌板。 1.通常我们在替换嵌板时都是通过Tab切换,然后选中嵌板。这样进行来回切…

windows免费版切割pdf拆分pdf提取pdf指定页码小工具

如图所示:选择pdf文件,输入指定页码区间,使用逗号分隔,逗号不区分中英文。如输入1-10,11-20,21-21,点击开始分割,会拆分出1-10.pdf,11-20.pdf,21-21.pdf&…

短视频矩阵源码-智能剪辑生成技术数值组如何编程?

短视频混剪生成时长逻辑一般采用根据用户设定的总时长、视频数量、时长比例等参数计算出每个视频在混剪中所占的时长,然后根据视频的总时长与所占比例来划分每个视频在混剪中的时长,最后将各个视频拼接起来形成混剪视频。此算法可以进行灵活的时长调整和…

rt下降40%?程序并行优化六步法 | 京东云技术团队

1 背景 性能优化是我们日常工作中很重要的一部分,主要有以下原因: 降低服务器和带宽等硬件成本:用更少的资源处理更多的请求提高现实世界的运行效率:人机处理效率存在数量级的偏差,同样机器世界的效率提升能带来现实…

十一、配置内网穿透实现消息模块和授权登陆模块

开通内网穿透的服务(后端8333,前端8080): 启动内网穿透服务: 创建CourseApiController来实现关键词查询课程信息: package com.lxl.ggkt.vod.api;import com.baomidou.mybatisplus.core.conditions.query.…

2023年认证杯SPSSPRO杯数学建模D题(第一阶段)立体车库的自动调度问题全过程文档及程序

2023年认证杯SPSSPRO杯数学建模 D题 立体车库的自动调度问题 原题再现: 随着人们生活水平的提高,汽车保有量日益增加,而城市土地资源有限,传统平面停车场土地面积利用率低, 这样便形成了交通拥挤、停车困难的现象。为解决该问题…

资深测试老鸟整理,超全自动化测试用例详解-小技巧总结...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Python自动化测试&…

PCA的数学原理和python实现

最近学习了一下PCA,具体原理网址如下: CodingLabs - PCA的数学原理 主要原理是通过线性变换将原始数据变换为一组各维度线性无关的表示,其中将方差最大的方向作为主要特征。提取数据的主要特征分量,可用于高维数据的降维 主要算…

工作3年裸辞,从18K到38K,面试也····

现在的面试好像也不是那么的难 工作3年,换了好几份工作(行业流行性大),每次工作都是裸辞。朋友都觉得不可思议。因为我一直对自己很有信心,而且特别不喜欢请假面试,对自己负责也对公司负责。 但是这次没想…

Axure 教程:动态分组条形图(中继器)

本文将教大家如何用AXURE中的中继器动态分组条形图 一、效果介绍 如图: 预览地址:https://v7cmdp.axshare.com 下载地址:https://download.csdn.net/download/weixin_43516258/87807121?spm1001.2014.3001.5503 二、功能介绍 简单填写中继…

Lucene(4):Field域类型

1 Field属性 Field是文档中的域,包括Field名和Field值两部分,一个文档可以包括多个Field,Document只是Field的一个承载体,Field值即为要索引的内容,也是要搜索的内容。 是否分词(tokenized) 是:作分词处理…

requests爬虫

目录 一、爬虫概念及分类 二、requests模块 1、网页地址内容获取 2、图片爬取 3、UA伪装 三、动态加载数据 一、爬虫概念及分类 爬虫: 通过编写代码,让其模拟浏览器上网,然后在互联网中抓取数据的过程 分类:1、通用爬虫:要…

Linux: ARM32各CPU模式下栈配置

文章目录 1. 前言2. 背景3. ARM32 中断向量表 和 中断处理流程3.1 ARM32 中断向量表3.2 ARM32 中断处理流程 4. ARM32 各CPU模式下的栈配置4.1 SVC模式下各CPU栈配置(内核栈配置)4.1.1 BOOT CPU SVC模式栈配置(内核栈配置)4.1.2 非 BOOT CPU SVC模式栈配置(内核栈配置) 4.2 中断…