当前位置: 首页 > news >正文

spring复习:(57)PropertyOverrideConfigurer用法及工作原理

一、属性配置文件

dataSource.url=jdbc:mysql://xxx.xxx.xxx.xxx/test
dataSource.username=root
dataSource.password=xxxxxx
dataSource.driverClassName=com.mysql.jdbc.Driver
#dataSource.type=com.alibaba.druid.pool.DruidDataSource

二、spring配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><bean class="org.springframework.beans.factory.config.PropertyOverrideConfigurer"><property name="locations" value="classpath:cn/edu/tju/jdbc2.properties"/></bean><bean id="dataSource"class="com.alibaba.druid.pool.DruidDataSource"></bean></beans>

三、测试类:

package cn.edu.tju.test;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import java.sql.SQLException;public class Test06 {public static void main(String[] args) throws Exception {ConfigurableApplicationContext ctx = newClassPathXmlApplicationContext("spring6.xml");DruidDataSource dataSource = ctx.getBean("dataSource", DruidDataSource.class);DruidPooledConnection connection = dataSource.getConnection();System.out.println(connection);}
}

xml文件中配置的属性值会被properties文件中的属性覆盖。
PropertyOverrideConfigurer父类是PropertyResourceConfigurer,它是一个BeanFactoryPostProcessor,所以,它的postProcessBeanFactory会被执行,这个方法代码如下:
在这里插入图片描述
这个方法首先获取到了属性值,然后调用processProperties方法(位于PropertyOverrideConfigurer类),这个方法代码如下:
在这里插入图片描述
可以看到它遍历Properties,然后调用了processKey方法,processKey的代码如下:
在这里插入图片描述
可以看到,调用了applyPropertyValue方法,传入了BeanFactory, BeanName, BeanProperty,value,
applyPropertyValue的代码如下:
在这里插入图片描述
可以看到,首先获取到了BeanDefinition,然后包装了一个PropertyValue,最后将包装的PropertyValue设置到了BeanDefinition.

相关文章:

spring复习:(57)PropertyOverrideConfigurer用法及工作原理

一、属性配置文件 dataSource.urljdbc:mysql://xxx.xxx.xxx.xxx/test dataSource.usernameroot dataSource.passwordxxxxxx dataSource.driverClassNamecom.mysql.jdbc.Driver #dataSource.typecom.alibaba.druid.pool.DruidDataSource二、spring配置文件 <?xml version&…...

在axios中获取文件上传进度

1.在axios 全局配置的文件中加入一个postFile 方法在上传文件时调用。 export function postFile(url, params,config) {return new Promise((resolve, reject) > {axios.post(url, params,config).then(res > {resolve(res);}).catch(err > {reject(err);})}) } 2.…...

黑马头条-kafka配置

生产者配置 NAMEDESCRIPTIONTYPEDEFAULTVALID VALUESIMPORTANCEbootstrap.servershost/port列表&#xff0c;用于初始化建立和Kafka集群的连接。列表格式为host1:port1,host2:port2,…&#xff0c;无需添加所有的集群地址&#xff0c;kafka会根据提供的地址发现其他的地址&…...

PMP P-01 Basic Knowledge

PMP基础知识...

java八股文面试[数据结构]——ArrayList和LinkedList区别

ArrayList和LinkedList的异同 二者的线程都不安全&#xff0c;相对线程安全的Vector,执行效率高。此外&#xff0c;ArrayList时实现了基于动态数组的数据结构&#xff0c;LinkedList基于链表的数据结构&#xff0c;对于随机访问get和set&#xff0c;ArrayList觉得优于LinkedLis…...

OpenCV中QR二维码的生成与识别(CIS摄像头解析)

1、QR概述 QR(Quick Response)属于二维条码的一种&#xff0c;意思是快速响应的意思。QR码不仅信息容量大、可靠性高、成本低&#xff0c;还可表示汉字及图像等多种文字信息、其保密防伪性强而且使用非常方便。更重要的是QR码这项技术是开源的&#xff0c;在移动支付、电影票、…...

常见排序集锦-C语言实现数据结构

目录 排序的概念 常见排序集锦 1.直接插入排序 2.希尔排序 3.选择排序 4.堆排序 5.冒泡排序 6.快速排序 hoare 挖坑法 前后指针法 非递归 7.归并排序 非递归 排序实现接口 算法复杂度与稳定性分析 排序的概念 排序 &#xff1a;所谓排序&#xff0c;就是使一串记录&#…...

css 实现四角边框样式

效果如图 此图只实现 左下与右下边角样式 右上与左上同理 /* 容器 */ .card-mini {position: relative; } /* 左下*/ .card-mini::before {content: ;position: absolute;left: 0;bottom: 0;width: 20px;height: 20px;border-bottom: 2px solid #253d64;border-left: 2px so…...

机器学习深度学习——自注意力和位置编码(数学推导+代码实现)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——注意力分数&#xff08;详细数学推导代码实现&#xff09; &#x1f4da;订阅专栏&#xff1a;机器学习…...

02.案列项目Demo

1.创建项目 1. 创建项目 用pycharm 选择对应的编译器&#xff0c;输入对应的文件名&#xff0c;点击创建项目。删除默认外层生成的template和DIRS 配置项&#xff1a; 2. 创建App 创建appo1的命令&#xff1a; python manage.py startapp app01 如果使用pycharm>tool>…...

PDF校对:追求文档的精准与完美

随着数字化时代的到来&#xff0c;PDF已经成为了多数机构和个人首选的文件格式&#xff0c;原因在于它的稳定性、跨平台特性以及统一的显示效果。但是&#xff0c;对于任何需要公开或正式发布的文档&#xff0c;确保其内容的准确性是至关重要的&#xff0c;这就是PDF校对显得尤…...

低代码解放生产力,助力企业高效发展

近年来&#xff0c;随着数字化转型的推进&#xff0c;企业对于软件开发的需求日益显著。然而&#xff0c;传统的软件开发模式通常需要耗费大量时间和资源&#xff0c;限制了企业的快速响应能力。为了解决这一难题&#xff0c;低代码开发平台应运而生&#xff0c;成为企业和开发…...

【前端从0开始】CSS——9、浮动

1. 浮动&#xff08;float&#xff09; 1.1 定义 float 属性定义元素向哪个方向浮动。之前这个属性应用于图像&#xff0c;使文本围绕在图像周围&#xff0c;不过在 CSS 中&#xff0c;任何元素都可以浮动。浮动元素会生成一个块级框&#xff0c;不论它本身是何种元素。 取值…...

如何在Moonriver网络上向社区代表委托投票权利

我们之前介绍了「社区代表」这一概念&#xff0c;想必大家对社区代表在治理中扮演的角色和地位有了一定的了解。 本文将介绍如何将您的投票权利委托给社区代表。请注意&#xff0c;在委托Token给社区代表这一过程中&#xff0c;并非将您的Token转移给任何人&#xff0c;而且此…...

时序预测 | MATLAB实现基于CNN-GRU卷积门控循环单元的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-GRU卷积门控循环单元的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-GRU卷积门控循环单元的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 MATLAB实现基于CNN-GRU卷积…...

【李群李代数】李群控制器(lie-group-controllers)介绍——控制 SO(3) 空间中的系统的比例控制器Demo...

李群控制器SO(3)测试 测试代码是一个用于控制 SO(3) 空间中的系统的比例控制器。它通过计算控制策略来使当前状态逼近期望状态。该控制器使用比例增益 kp 进行参数化&#xff0c;然后进行一系列迭代以更新系统状态&#xff0c;最终检查状态误差是否小于给定的阈值。这个控制器用…...

DP读书:鲲鹏处理器 架构与编程(六)PCI Express 总线

处理器与服务器&#xff1a;PCI Express 总线 PCI Express 总线1. PCI Express 总线的特点a. 高速差分传输b. 串行传输c. 全双工端到端连接d. 基于多通道的数据传输方式e. 基于数据包的传输 2. PCI Express 总线的组成与拓扑结构a. 根复合体b. PCI Express桥c. 功能单元 3. PCI…...

Pyqt5-开源工具分解功能(文本拖拽)

开源第四篇:功能实现之拖拽功能与配置文件。 写这个功能的初衷,是因为,每次调试我都要手动敲命令,太麻烦了,想偷个懒,所以直接给这功能加上了,顺便衍生出了另一个想法,配置文件自动填写相关数据。 先看个简单的拖拽功能: 很明显吧,还是比较便捷的。所以我们本章,就在…...

Java版B/S架构 智慧工地源码,PC、移动、数据可视化智慧大屏端源码

智慧工地是什么&#xff1f;智慧工地主要围绕绿色施工、安全管控、劳务管理、智能管理、集成总控等方面&#xff0c;帮助工地解决运营、管理方面各个难点痛点。在互联网的加持下促进项目现场管理的创新与发展&#xff0c;实现工程管理人员与工程施工现场的整合&#xff0c;构建…...

无涯教程-PHP - Session选项

从PHP7 起&#xff0c; session_start()()函数接受一系列选项&#xff0c;以覆盖在 php.ini 中设置的会话配置指令。这些选项支持 session.lazy_write &#xff0c;默认情况下此函数为on&#xff0c;如果会话数据已更改&#xff0c;则会导致PHP覆盖任何会话文件。 添加的另一个…...

如何在5分钟内体验完整的Windows 12网页版:创新系统模拟器终极指南

如何在5分钟内体验完整的Windows 12网页版&#xff1a;创新系统模拟器终极指南 【免费下载链接】win12 Windows 12 网页版&#xff0c;在线体验 点击下面的链接在线体验 项目地址: https://gitcode.com/gh_mirrors/wi/win12 想要在浏览器中运行完整的Windows系统界面吗&…...

无人机协议

1. MAVLink协议 概述&#xff1a;MAVLink是一种轻量级、低带宽的无人机通信协议&#xff0c;它支持点对点、广播和多播通信&#xff0c;并且可以在不同的平台上使用。应用&#xff1a;MAVLink协议广泛应用于PX4、ArduPilot等开源飞控系统中&#xff0c;用于地面站和无人机之间…...

AI智能体自动化部署:Agent Factory 两分钟构建专家级AI助手

1. 项目概述&#xff1a;Agent Factory 是什么&#xff1f; 如果你和我一样&#xff0c;对AI智能体&#xff08;AI Agent&#xff09;的潜力感到兴奋&#xff0c;但又对部署一个功能完整、面向公众的专家级Agent感到头疼——需要配置身份、记忆、知识库、Web界面&#xff0c;还…...

基于OpenClaw的AI智能体脚手架Tradeclaw:构建跨境贸易决策支持系统

1. 项目概述&#xff1a;为跨境贸易打造的AI智能体脚手架如果你正在从事跨境电商或外贸采购&#xff0c;每天面对海量的产品信息、繁杂的供应商数据和模糊的市场信号&#xff0c;感觉像在信息海洋里盲目捕捞&#xff0c;那么Tradeclaw这个项目可能就是为你量身定制的“数字捕手…...

如何利用Deep SORT实现稳定高效的多目标追踪

如何利用Deep SORT实现稳定高效的多目标追踪 【免费下载链接】deep_sort Simple Online Realtime Tracking with a Deep Association Metric 项目地址: https://gitcode.com/gh_mirrors/de/deep_sort 在计算机视觉的实际应用中&#xff0c;多目标追踪一直是一个技术难点…...

Fillinger智能填充插件:如何用3分钟完成1小时的设计工作?

Fillinger智能填充插件&#xff1a;如何用3分钟完成1小时的设计工作&#xff1f; 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 还在为Adobe Illustrator中繁琐的图案填充而头疼吗…...

长期使用Taotoken后对账单追溯与审计功能的实际评价

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken后对账单追溯与审计功能的实际评价 在持续使用大模型服务进行项目开发与团队协作的过程中&#xff0c;成本的可观…...

从Landsat 8数据到地表温度:劈窗算法实战解析

1. 从Landsat 8数据到地表温度&#xff1a;劈窗算法实战解析 地表温度是研究城市热岛效应、农业干旱监测、气候变化等领域的重要参数。Landsat 8卫星搭载的热红外传感器TIRS&#xff08;Thermal Infrared Sensor&#xff09;提供了两个热红外波段&#xff08;B10和B11&#xff…...

AI建站案例:一家外贸工厂如何用“AI+系统”拿下海外订单

AI建站案例&#xff1a;一家外贸工厂如何用“AI系统”拿下海外订单【引言&#xff1a;别让网站成为“电子名片”】我们看过太多外贸工厂的网站&#xff1a;花了几千块&#xff0c;做得金碧辉煌&#xff0c;但一年下来询盘屈指可数。问题不在产品&#xff0c;而在“数字化基建”…...

在Docker环境中安装Hadoop cluster 实验报告三

在Docker环境中安装Hadoop cluster 实验报告三 1个namenode, 3个datanodes 班 级&#xff1a;物联网2303 学 号&#xff1a;231040700302 姓 名&#xff1a;杜子健 (30%) 安装过程 ContainersHadoop 1.1 Containers 创建与配置 &#xff08;1&#xff09;拉取稳定镜像…...