Spring数据源对象管理:基于XML配置文件的第三方bean管理

前言

  • 第三方资源配置管理
    •  ioc容器和依赖管理,我们大多数管理的是自己创建的bean,如果是第三方提供的bean是如何管理,我们以数据源对象的ioc管理为例子进行说明。

步骤

第一步: 需要导入相应的依赖包(导入坐标)

pom.xml

    <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.10.RELEASE</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version></dependency>

 第二步:配置xml文件(需要自己了解数据源对象的名称,属性名等等信息)

即数据源bean运行需要哪些信息:

  • 因为数据源需要连接数据库(需要连接驱动,url,用户名,密码...),
  • 又因为数据源对象只提供了合适的set方法进行使用,
  • 因此只能使用setter注入

老版本驱动,一般指5.x版本:

driverClassName: com.mysql.jdbc.Driver

新版本驱动,一般指8.x版本:

driverClassName: com.mysql.cj.jdbc.Driver

mysql8.0版本以上可能还需要配置时区等相关配置

总的来说:

管理第三方bean的工作流程:将哪个对象交给ioc管理,并提供哪些属性,才能使这个对象工作。

spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/><property name="url"  value="jdbc:mysql://localhost:3306/test1010?serverTimezone=Asia/Shanghai&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull"/><property name="username" value="root"/><property name="password" value="root"/></bean></beans>

 第三步:创建测试类进行测试

AppTest

public class AppTest {public static void main(String[] args) {ApplicationContext context =new ClassPathXmlApplicationContext("spring.xml");DataSource dataSource = (DataSource) context.getBean("dataSource");System.out.println(dataSource);}
}

运行结果

 扩展

配置信息分离

在resources文件夹下创建一个jdbc.properties配置文件配置连接信息

jdbc.properties

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test1010?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
username=root
password=root

spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><context:property-placeholder location="jdbc.properties"/><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${driver}"/><property name="url"  value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></bean></beans>

第一步:首先要开启spring提供的命名空间context

新增命名空间

 第二步:使用context空间加载properties文件

 <context:property-placeholder location="jdbc.properties"/>

第三步:使用属性占位符${},读取properties文件中的属性

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${driver}"/>
        <property name="url"  value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
    </bean>
 

 注意事项

在配置properties文件时,名称与系统的属性冲突,而系统的属性优先级更高,就会产生错误,这时需要关闭系统属性优先级

<context:property-placeholder location="jdbc.properties"  system-properties-mode="NEVER"/>

使用system-properties-mode="NEVER"

可以同时加载多个properties文件,需要遵守以下规则:

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解构OpenAI swarm:利用Cursor进行框架分析与示例运行

解构OpenAI SWARM:利用Cursor进行框架分析与示例运行 1. 引言 在AI技术日新月异的今天,OpenAI再次为我们带来了惊喜。SWARM框架作为其最新研究成果,正在开创多智能体协作的新纪元。本文将带您深入探索这一框架,通过Cursor工具进行代码分析,并手把手教您安装运行SWARM。无论您…

Data+AI下的数据湖和湖仓一体发展史

DataAI下的数据湖和湖仓一体发展史 前言数据湖的“前世今生”AI时代的救星&#xff1a;湖仓一体湖仓一体实践演进未来趋势&#xff1a;智能化、实时化结语 前言 数据湖&#xff1f;湖仓一体&#xff1f;这是什么高科技新名词&#xff1f; 别急&#xff0c;我们慢慢聊。想象一…

机器学习:opencv--风格迁移

目录 前言 一、代码及步骤解释 1.图片与处理 2.加载模型 3.输出图像 前言 风格迁移&#xff08;Style Transfer&#xff09;是一种计算机视觉技术&#xff0c;旨在将一种图像的艺术风格应用到另一种图像上&#xff0c;同时保持其内容。 一、代码及步骤解释 1.图片与处理 …

从Apple Intelligence到远程机器人手术:更快、更安全的网络成企业业务关键

过去&#xff0c;企业的业务模式和网络架构相对简单&#xff0c;数据传输量不大&#xff0c;远程访问需求也不多。企业对网络的要求主要集中在确保基本的连通性和可用性。如今&#xff0c;企业通过将产品与各项高新技术深度融合&#xff0c;赋予传统产品活力和竞争力。以苹果公…

web3D越来越普及来,在站显示效果上没说的

Web3D 技术为网站带来了全新的视觉体验。它能够以逼真的三维形式展示产品、场景或数据&#xff0c;让用户仿佛身临其境。 无论是展示复杂的机械结构、精美的艺术品&#xff0c;还是模拟真实的自然环境&#xff0c;Web3D 都能以其出色的表现力吸引用户的注意力。 在显示效果上…

国产大模型基础能力大比拼 - 计数:通义千文 vs 文心一言 vs 智谱 vs 讯飞-正经应用场景的 LLM 逻辑测试

在大语言模型&#xff08;LLM&#xff09;不断涌现的时代&#xff0c;如何评估这些国产大模型的逻辑推理能力&#xff0c;尤其是在处理基础计数问题上的表现&#xff0c;成为了一个备受关注的话题。随着越来越多的国产大模型进入市场&#xff0c;比较它们在不同任务中的表现尤为…

mysql数据同步ES方案---DTS

在上一篇文章中&#xff0c;我通过一个简单的例子实现了如何通过 Canal 实现 MySQL 数据到 Elasticsearch 的同步&#xff0c;以满足增量捕获和实时同步的需求。然而实际情况中&#xff0c;比如在我之前工作的公司&#xff0c;为了减少运维工作量和代码操作的复杂性&#xff0c…

Android OpenGL粒子特效

在本篇&#xff0c;我们将开启一个新的项目&#xff0c;探索粒子的世界。粒子是一种基本的图形元素&#xff0c;它们通常被表示为一组点。通过巧妙地组合一些基础的物理效果&#xff0c;我们能够创造出许多令人惊叹的视觉效果。想象一下&#xff0c;我们可以模拟一个水滴从喷泉…

Xcode使用Instruments的dsym还原符号堆栈问题

文章目录 设置符号表的步骤参考资料 设置符号表的步骤 instruments 的 Settings 中&#xff0c;可以设置符号表的搜索路径 没有生效的话&#xff0c;继续看 File 里面的 Symbols - 出现弹窗后点击 Add Symbols - 然后再点击 Apply。 参考资料 https://xjkstar.github.i…

Unity URP shader ———魔系符文宝石是如何练成的

各位同学大家好 我已经很久没有没有写教程了&#xff0c;最近项目比较忙。各种加班各种带小孩儿&#xff0c;不过&#xff0c;老师一有机会也在给尽可能服务大家&#xff0c;今天来一个硬菜&#xff1a;移动端高效魔系符文如何制作&#xff0c;国庆起来&#xff0c;老师抽了点…

汽车免拆诊断案例 | 2013款宝马116i车偶尔加速不良

故障现象  一辆2013款宝马116i车&#xff0c;搭载N13B16A 发动机&#xff0c;累计行驶里程约为12.1万km。车主反映&#xff0c;该车行驶中偶尔加速无反应&#xff0c;且发动机故障灯异常点亮。 故障诊断 接车后试车&#xff0c;故障现象无法再现。用故障检测仪检测&#xff…

RestClient查询文档match查询、精确查询和布尔查询

目录 match查询 精确查询 布尔查询 match查询 全文检索的match和multi_match查询与match_all的API基本一致。差别是查询条件&#xff0c;也就是query的部分。 因此&#xff0c;Java代码上的差异主要是request.source().query()中的参数了。同样是利用QueryBuilders提供的方法…

解决在Windows中安装tensorflow2.10无法检测到GPU的问题

解决在Windows中安装tensorflow2.10无法检测到GPU的问题 官方给出的Windows本地安装方式 更新显卡驱动到最新。安装anaconda或miniconda作为python环境的管理工具。创建新的环境tf&#xff1a;conda create --name tf python3.9&#xff0c;然后进入改环境&#xff1a;conda …

redis的zset实现下滑滚动分页查询思路

常规zset查询 我们redis的数据为 我们知道 我们常规查询的话 我们假如 zset 表中 有7个元素&#xff0c;然后我们进行分页查询的话&#xff0c;我们一次查3个元素&#xff0c;然后查出来元素 和元素的分数 我们redis的语法应该这样写 zrevrangebyscore wang 1000 0 withsc…

目标检测最新SOTA模型D-FINE

2024年10月18号&#xff0c;中科大推出了 D-FINE&#xff0c;这是一款功能强大的实时物体检测器&#xff0c;通过重新定义 DETR 模型中的边界框回归任务实现了出色的定位精度。 摘要 D-FINE 包含两个关键组件&#xff1a;细粒度分布细化 (FDR) 和全局最优定位自蒸馏 (GO-LSD)…

【正点原子K210连载】第四十五章 人脸识别实验 摘自【正点原子】DNK210使用指南-CanMV版指南

第四十五章 人脸识别实验 在上一章节中&#xff0c;介绍了利用maix.KPU模块实现了人脸68关键点检测&#xff0c;本章将继续介绍利用maix.KPU模块实现的人脸识别。通过本章的学习&#xff0c;读者将学习到人脸识别应用在CanMV上的实现。 本章分为如下几个小节&#xff1a; 45.1…

vue3使用element-plus手动更改url后is-active和菜单的focus颜色不同步问题

在实习&#xff0c;给了个需求做个新的ui界面&#xff0c;遇到了一个非常烦人的问题 如下&#xff0c;手动修改url时&#xff0c;is-active和focus颜色不同步 虽然可以直接让el-menu-item:focus为白色能解决这个问题&#xff0c;但是我就是想要有颜色哈哈哈&#xff0c;有些执…

车载实操:一对一实操学习、CANoe实操学习、推荐就业机会、就业技术支持、协助面试辅导

FOTA模块中OTA的知识点&#xff1a;1.测试过程中发现哪几类问题&#xff1f; 可能就是一个单键的ecu&#xff0c;比如升了一个门的ecu&#xff0c;他的升了之后就关不上&#xff0c;还有就是升级组合ecu的时候&#xff0c;c屏上不显示进度条。 2.在做ota测试的过程中&#xff…

【鸡翅Club】项目启动

一、项目背景 这是一个 C端的社区项目&#xff0c;有博客、交流&#xff0c;面试学习&#xff0c;练题等模块。 项目的背景主要是我们想要通过面试题的分类&#xff0c;难度&#xff0c;打标&#xff0c;来评估员工的技术能力。同时在我们公司招聘季的时候&#xff0c;极大的…