Spring系统学习 -Spring IOC 的XML管理Bean之P命名空间、实现引入MySQL外部链接属性文件

P命名空间

在Spring框架中,P命名空间是一种用于简化XML配置文件中属性注入的方式。通过引入P命名空间,可以使用更简洁的语法来设置bean的属性值,而无需显式地使用<property>子元素。这使得XML配置文件更加简洁和易于阅读。

要在Spring的XML配置文件中使用p命名空间,你需要遵循以下步骤:

  1. 导入命名空间:首先,在根<beans>元素中导入p命名空间。这通常是在xmlns之后添加xmlns:p="http://www.springframework.org/schema/p"
<?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:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">
  1. 使用p命名空间:然后,你可以在<bean>元素中使用p:propertyName="value"的形式来设置bean的属性。例如,假设我们有一个Person类,其中包含firstNamelastName属性,我们可以这样配置:

    <bean id="person" class="com.example.Person"p:firstName="John" p:lastName="Doe"/>
    

    这等价于使用<property>元素的以下配置:

    <bean id="person" class="com.example.Person"><property name="firstName" value="John"/><property name="lastName" value="Doe"/>
    </bean>
    

使用p命名空间可以显著减少配置文件的大小和复杂度,尤其是在处理具有多个属性的bean时。然而,对于更复杂的注入场景(例如,集合类型或引用类型的注入),我们可能仍然需要使用传统的<property>元素。

需要注意的是,p命名空间仅适用于那些具有默认无参构造函数的bean。如果bean的构造函数需要参数,那么我们可能需要使用构造函数注入,此时p命名空间可能无法完全替代<constructor-arg>元素。

    <bean id="studentSix" class="com.miaow.spring.bean.Student"p:id = '10065' p:address="湖南"></bean>
    @Testpublic void PTest(){ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");Student student = (Student) context.getBean("studentSix");System.out.println(student.getId());System.out.println(student.getAddress());}

在这里插入图片描述

在Spring中实现引入MySQL外部链接属性文件

我们目前惯用的一套先引入依赖:

<!-- MySQL驱动 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version>
</dependency>
<!-- 数据源 -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.0.31</version>
</dependency>

我们在Resources文件下创建一个db.properties文件
在这里插入图片描述

jdbc.user=root
jdbc.password=123456
jdbc.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
jdbc.driver=com.mysql.cj.jdbc.Driver

之后我们创建一个spring-datasource.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/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--    链接数据库分几种类型 第一种 db.properties 配置文件引入 --><!-- 引入外部属性文件 --><context:property-placeholder location="classpath:db.properties"/><bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="url" value="${jdbc.url}"/><property name="driverClassName" value="${jdbc.driver}"/><property name="username" value="${jdbc.user}"/><property name="password" value="${jdbc.password}"/></bean><!--   第二种直接配置 直接将上述引入的配置文件的值填写进去就可 --></beans>
    @Testpublic void DataBaseTest() throws SQLException {ApplicationContext context = new ClassPathXmlApplicationContext("spring-datasource.xml");DataSource dataSource = context.getBean(DataSource.class);Connection connection = dataSource.getConnection();System.out.println(connection);}

出现如图所示,代表我们已经和数据库建立连接了,之后我们就可以创建相关库和表进行数据操作了。
在这里插入图片描述

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

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

相关文章

shell条件测试和if语句

“C:\Users\Jessica\Desktop\6.12.assets\image-20240612094159578.png”# shell条件测试和if语句 一、条件测试 1、$? 返回码 判断命令或者脚本是否执行成功&#xff08;最近的一条&#xff09; 0 true 为真就是成功 成立 非0 false 失败或者异常 2、test命令 可以进行…

「OC」UI练习(二)——照片墙

「OC」UI练习——照片墙 文章目录 「OC」UI练习——照片墙UITapGestureRecognizer介绍照片墙实现 UITapGestureRecognizer介绍 UITapGestureRecognizer是UIKit框架中的一个手势识别器类&#xff0c;用于检测用户在视图上的轻击手势。它是UIGestureRecognizer的一个子类&#x…

ROS2读源码过程中涉及到的核心点梳理解读

流控 watchdog 过滤 如何把writer跟reader匹配 依赖topic&#xff1f;QOS? datashared 如何配置 安全 何时持久化 域隔离&#xff1f; 只有在同一个域内的通信实体才能通信&#xff0c;不同域内的实体间无法进行通信 架构设计细节、扩展性&#xff1f; 代码为什么难读…

源代码防泄密经验分享之安全上网篇

场景描述&#xff1a; 随着信息技术的发展&#xff0c;越来越多的新技术产品进入到政府、军事、科研等涉密单位。这些新技术产品在给工作人员带来便利的同时&#xff0c;也给信息安全保密工作带来了许多新的不容忽视的安全隐患&#xff0c;应引起高度重视。常规的内外网隔离手…

Vue29-自定义指令:函数式

一、定义 内置指令&#xff0c;指令是vue作者定的&#xff0c;背后的操作DOM的逻辑是也是vue作者写的。 自定义指令&#xff0c;指令名自定义&#xff0c;指令背后如何去操作DOM元素&#xff0c;也是自定义。 二、需求1&#xff1a;big指令 2-1、自定义指令directive 1、写法…

美摄科技匿名化处理解决方案,包含模糊、同色、马赛克、效果遮挡等各种形式

信息安全已成为企业发展中不可忽视的重要一环&#xff0c;随着信息安全法规的日益严格和公众对个人隐私保护意识的不断提高&#xff0c;企业如何在保障业务顺畅进行的同时&#xff0c;满足信息安全和隐私保护的要求&#xff0c;成为了亟待解决的问题。美摄科技凭借其强大的技术…

西门子学习笔记13 - mtqq库项目

这是我整合过后的mqtt库的下载地址 https://download.csdn.net/download/qq_61916672/89423266https://download.csdn.net/download/qq_61916672/89423266

如何开发一个直播APP:功能介绍与开发步骤详解

随着移动互联网的迅猛发展&#xff0c;直播APP已经成为人们生活中不可或缺的一部分。无论是娱乐、教育、商业还是其他领域&#xff0c;直播APP都以其独特的实时互动性和广泛的受众群体而备受欢迎。那么&#xff0c;如何开发一个直播APP呢&#xff1f;本文将详细介绍直播APP的功…

virtualbox扩展磁盘

使用virtualbox搭建虚拟机&#xff0c;如果磁盘不够用了&#xff0c;可以通过以下方式扩展。 扩容磁盘 分区扩展 查看磁盘情况 fdisk -l Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units sectors of 1 * 512 512 bytes Sector size (logical/phys…

【全开源】餐饮点餐小程序源码(ThinkPHP+FastAdmin+Uniapp)

&#x1f37d;️餐饮点餐小程序&#xff1a;让美食触手可及 一款基于ThinkPHPFastAdminUniapp开发的点餐小程序&#xff0c;支持单人点餐&#xff0c;还满足多人协同点餐(高级授权)&#xff0c;支持多门店管理&#xff0c;并提供先吃后付和先付后吃两种支付方式。​ &#x1…

[项目推荐]EmoLLM-心理健康大模型

EmoLLM 是一系列能够支持理解用户-支持用户-帮助用户心理健康辅导链路的开源心理健康大模型&#xff0c;由LLM指令微调而来。它旨在全面理解和促进个体、群体乃至整个社会的心理健康状态。 项目介绍 GitHub&#xff1a;https://github.com/SmartFlowAI/EmoLLM 【EmoLLM项目提供…

Go API

Go语言提供了大量的标准库&#xff0c;因此 google 公司也为这些标准库提供了相应的API文档&#xff0c;用于告诉开发者如何使用这些标准库&#xff0c;以及标准库包含的方法。官方位置&#xff1a;https://golang.org Golang中文网在线标准库文档: https://studygolang.com/p…

荣耀正式发布Magic V Flip,打造全形态折叠屏矩阵

6月13日&#xff0c;荣耀Magic V Flip科技时尚大秀在上海举行。作为荣耀旗下首款小折叠手机&#xff0c;荣耀Magic V Flip的问世标志着荣耀完成折叠屏全体系的最终部署&#xff0c;成为少数集齐现有各类折叠屏手机形态的品牌之一。 荣耀从消费者需求出发&#xff0c;以AI和折叠…

docker-compose Install it-tools

IT-Tools前言 IT-Tools是一款开源的个人工具箱,专为IT从业人员打造,支持Docker私有化部署,包含众多实用的IT工具。其功能丰富多样,涵盖二维码生成、数据格式转换、MAC地址生成等,可满足用户多样化的需求。 前提要求 安装 docker docker-compose 参考创建一键部署it-tool…

AnythingLLM 的 Docker 使用

AnythingLLM是使用大语言模型LLM的一站式简便框架。官网的介绍如下&#xff1a; AnythingLLM is the easiest to use, all-in-one AI application that can do RAG, AI Agents, and much more with no code or infrastructure headaches. 1. 使用官方docker 最方便的方法是使…

Conda安装

conda可以做到不同项目就用不同虚拟环境,这样就能做到每个项目的依赖包都是相互独立 一、windows Download Success | Anaconda 环境变量 二、nano 本次安装Archiconda的外部python版本为python3.7.1

【论文复现|智能算法改进】基于改进鲸鱼优化算法的移动机器人多目标点路径规划

目录 1.算法原理2.数学模型3.改进点4.结果展示5.参考文献6.代码获取 1.算法原理 SCI二区|鲸鱼优化算法&#xff08;WOA&#xff09;原理及实现【附完整Matlab代码】 2.数学模型 使用 A* 算法生成所有目标点之间的距离矩阵U: U [ d 1 − 1 d 1 − 2 d 1 − 3 ⋯ d 1 − i d…

【算法训练记录——Day28】

Day28——回溯算法Ⅳ 1.复原IP地址2.[全排列](https://leetcode.cn/problems/permutations/submissions/539240290/)3.[全排列Ⅱ](https://leetcode.cn/problems/permutations-ii/description/) ● 93.复原IP地址 ● 78.子集 ● 90.子集II 1.复原IP地址 思路&#xff1a;相当于…

【C语言】二维数组(详解)

目录 1. 二维数组的创建 1.1 二维数组的概念 1.2 二维数组的创建 2. 二维数组的初始化 2.1 不完全初始化 2.2 完全初始化 2.3 按照行初始化 2.4 初始化时能省略行&#xff0c;但不能省略列 3. 二维数组的使用 3.1 二维数组下标 3.2 二维数组…

将Firefox插件导入Edge/Chrome中

目录 将Firefox插件导入Edge/Chrome中前言导出火狐插件.xpi格式插件导入edge/chorme中错误示范1错误示范2修改过程manifest.jsondict文件夹修改backgroundScript.jsinjectedScript.jsdebug过程最终backgroundScript.js和injectedScript.js代码 完工阶段修改后的源码 将Firefox插…