spring专题笔记(七):spring如何引入外部属性文件?spring在xml配置bean时如何引入外部的properties属性文件内容?

目录

1、spring在xml配置bean时引入外部的properties属性文件内容作用是什么?

2、引入配置文件步骤

2.1、首先创建一个java类MyDataSource,主要包含四个属性。

2.2、准备一个myDataConfig.properties属性文件,里面配置MyDataSource类中需要的属性值

2.3、我们用xml配置来讲myDataConfig.properties属性文件中的值引入到MyDataSource类中

2.4、写个测试类测试一下结果

2.5、配置属性增加前缀


本文章主要介绍spring在xml配置bean时如何引入外部的properties属性文件内容,代码演示 + 步骤分析,注意事项以及细节问题改进方法等。

1、spring在xml配置bean时引入外部的properties属性文件内容作用是什么?

例如数据库连接配置,如果不引入外部属性文件,那么我们就需要在xml了写死数据库的配置信息信息,例如链接地址、用户名密码等。若有多处引用,后期需要修改就要去多处修改配置文件,非常不好维护。现在我们不写死,我们将配置信息配置到属性文件当中,若后续有需要修改,我们直接修改属性文件中的信息就可以了。而且属性文件中的配置信息可以被spring多出引用,便于维护。

2、引入配置文件步骤

2.1、首先创建一个java类MyDataSource,主要包含四个属性。

2.2、准备一个myDataConfig.properties属性文件,里面配置MyDataSource类中需要的属性值

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/spring6
userName=rootMyUsername
password=123

2.3、我们用xml配置来讲myDataConfig.properties属性文件中的值引入到MyDataSource类中

<?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.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"><!--第一步:引入context命名空间--><!--第二步:使用标签context:property-placeholder的location属性来指定配置文件的路径。location默认从类的根目录下开始加载资源--><context:property-placeholder location="myDataConfig.properties"></context:property-placeholder><bean id="MyDataSourceBean" class="com.linctSpring6.diProperties.MyDataSource"><property name="driver" value="${driver}"></property><property name="url" value="${url}"></property><property name="userName" value="${userName}"></property><property name="password" value="${password}"></property></bean>
</beans>

第一步:引入context命名空间xmlns:context="http://www.springframework.org/schema/context"

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd

第二步:

使用标签context:property-placeholder的location属性来指定配置文件的路径

location默认从类的根目录下开始加载资源

第三步:

用 value="${key}"的方式来引入外部属性文件

注意:value="${key}"中的key与外部属性文件中的配置key必须保持一致

2.4、写个测试类测试一下结果

 public static void main(String[] args) {ApplicationContext applicationContext = new ClassPathXmlApplicationContext("di-properties.xml");Object myDataSourceBean = applicationContext.getBean("MyDataSourceBean");System.out.println(myDataSourceBean);}

通过日志我们可以看到,我们将外部属性的配置引入到了bean当中

但是有一点需要注意的是,我们配置了一个userName=rootMyUsername,但是日志却显示userName=1。

原因:spring在识别${}来加载数据时,会优先加载windows系统环境变量的配置信息。在我的电脑中我的系统环境变量配置的userName值为1。

因此在很多时候,我们看到的配置信息都不会直接写名字,而是在前面加个jdbc.或者加公司前缀名来区分。

2.5、配置属性增加前缀

下面我们修改属性文件,加一个jdbc前缀。

xml的配置中也需要配合属性文件做修改。

我们再重新运行以下测试类,看到打印的日志正是我们想要的效果。

以上就是我对spring如何引入外部properties属性文件的理解啦,希望能帮到大家,有问题的地方欢迎大家一起讨论!

后续会不断更新作品,欢迎大家一起讨论学习。❤❤❤

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

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

相关文章

梳理你的思路(从OOP到架构设计)_认识框架(Framework) 01

目录 1、 是框架的核心要素​编辑&i> 范例1&#xff1a; 范例2&#xff1a; 范例3&#xff1a; 1、 <E&I>是框架的核心要素 在特定领域(Domain)里&#xff0c;将EIT造形的<E&I>部份有意义地组合起来&#xff0c;就成为框架(Framework)了。基本…

邮件白名单是什么?

邮件白名单是一种电子邮件过滤规则&#xff0c;用于指定哪些发件人、域名或IP地址的邮件被允许通过过滤系统&#xff0c;不受任何限制地进入收件人的邮箱。与黑名单&#xff08;用于阻止特定发件人的邮件&#xff09;相反&#xff0c;白名单确保了来自受信任来源的邮件能够畅通…

Maven项目中不修改 pom.xml 状况下直接运行OpenRewrite的配方

在Java 的Maven项目中&#xff0c;可以在pom.xml 中配置插件用来运行OpenRewrite的Recipe&#xff0c;但是有一些场景是希望不修改pom.xml 文件就可以运行Recipe&#xff0c;比如&#xff1a; 因为不需要经常运行 OpenRewrite&#xff0c;所以不想在pom.xml 加入不常使用的插件…

JVM实战—2.JVM内存设置与对象分配流转

大纲 1.JVM内存划分的原理细节 2.对象在JVM内存中如何分配如何流转 3.部署线上系统时如何设置JVM内存大小 4.如何设置JVM堆内存大小 5.如何设置JVM栈内存与永久代大小 6.问题汇总 1.JVM内存划分的原理细节 (1)背景引入 (2)大部分对象的存活周期都是极短的 (3)少数对象…

外部化内部类

要定义一个新的名字空间&#xff0c;将一个类内部的类提到外部&#xff0c;目的是降低类的耦合度和复杂度&#xff0c;这通常可以通过 外部化内部类 来实现。通过这种方式&#xff0c;可以将复杂的实现细节分离到一个单独的名字空间中&#xff0c;让外部类的接口保持简洁。接下…

创建仓颉编程语言的第一个项目

创建仓颉编程语言的第一个项目 安装仓颉编程语言编译器第一个仓颉项目 安装仓颉编程语言编译器 安装仓颉编程语言编译器&#xff0c;是一个需要非常强的动手能力的过程——有大量的命令行操作。这不是仓颉编程语言独有的特点。现在流行的编程语言&#xff0c;比如 kotlin、jav…

kong网关使用pre-function插件,改写接口的返回数据

一、背景 kong作为api网关&#xff0c;除了反向代理后端服务外&#xff0c;还可对接口进行预处理。 比如本文提及的一个小功能&#xff0c;根据http header某个字段的值&#xff0c;等于多少的时候&#xff0c;返回一个固定的报文。 使用到的kong插件是pre-function。 除了上…

计算机网络:IP地址相关知识总结

目录 一、IP地址的表现形式 1.1 十进制表示形式 1.2 二进制表示形式 1.3 转换示例介绍 二、IP地址的组成 2.1 网络ID 2.2 主机ID 2.3 示例 三、IP地址的分类 3.1 A类地址 3.2 B类地址 3.3 C类地址 3.4 D类地址 3.5 E类地址 四、常见的特殊IP地址 五、IP地址二进…

基础练习 Huffman树,C++,最小堆,STL

Description Huffman树在编码中有着广泛的应用。在这里&#xff0c;我们只关心Huffman树的构造过程。 给出一列数{pi}{p0, p1, …, pn-1}&#xff0c;用这列数构造Huffman树的过程如下&#xff1a; 1. 找到{pi}中最小的两个数&#xff0c;设为pa和pb&#xff0c;将pa和pb从{…

Java获取自身被调用点

1. 场景 打印日志的时候&#xff0c;需要获取是在哪个地方被调用了&#xff0c;把调用点的信息一并打印出来。 2. 获取自身被调用点的方法 可以通过获取线程的调用栈&#xff0c;遍历后找到调用点。 3. 代码实现 import java.text.SimpleDateFormat; import java.util.Dat…

vue3入门教程:teleport

一、基本语法 Teleport组件的基本语法如下&#xff1a; <Teleport to"目标选择器"><!-- 要传送的内容 --> </Teleport>其中&#xff0c;to属性指定了内容将被渲染到的目标位置&#xff0c;它可以是一个CSS选择器字符串&#xff08;如#some-id、.…

群晖Cloud Sync一键同步让数据管理变得简单

前言&#xff1a;在这个数字化爆炸的时代&#xff0c;数据管理和备份已经变得不可或缺。无论是个人用户还是企业&#xff0c;都需要一种既高效又可靠的方式来管理和备份分散在各种设备和云存储中的文件。而群晖的 **Cloud Sync** 套件正是为了解决这个问题而生。 Cloud Sync 是…

docker 部署mysql8

在Docker中部署MySQL 8是一个相对简单的过程。以下是基本的步骤&#xff1a; 拉取MySQL 8镜像&#xff1a; 使用Docker命令拉取最新的MySQL 8镜像&#xff1a; docker pull registry.openanolis.cn/openanolis/mysql:8.0.30-8.6创建并运行MySQL容器&#xff1a; 创建并运行MySQ…

Triple三倍

time limit per test 1 second memory limit per test 256 megabytes Given an array aa of nn elements, print any value that appears at least three times or print -1 if there is no such value. Input The first line contains an integer tt (1≤t≤1041≤t≤10…

GPIO+TIM(无PWM)实现呼吸灯功能

程序特点&#xff1a; 1、模块化&#xff0c;可快速移植&#xff0c;5分钟便可完成移植。 2、通过GPIO普通定时器&#xff0c;实现呼吸灯功能。 3、PWM周期为5ms&#xff0c;占空比调节时间为20ms&#xff0c;占空比为100等份&#xff0c;即呼吸灯从暗到亮需要20ms*1002s。 …

前缀树介绍

数风流人物&#xff0c;还看今朝&#xff01; 前缀树 Trie&#xff08;发音类似 "try"&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动补全和拼写检查。 前…

基于遥感与通信技术的灾害应急测绘

基于遥感与通信技术的灾害应急测绘研究评述与展望 摘要 本研究围绕基于遥感与通信技术的灾害应急测绘展开&#xff0c;深入探讨其在灾害管理中的重要性及当前发展现状。遥感技术凭借高分辨率、广覆盖的特性&#xff0c;已成为获取灾害信息的核心手段。结合5G通信与低轨卫星技术…

37 Opencv SIFT 特征检测

文章目录 Ptr<SIFT> SIFT::create示例 Ptr SIFT::create Ptr<SIFT> SIFT::create(int nfeatures 0,int nOctaveLayers 3,double contrastThreshold 0.04,double edgeThreshold 10,double sigma 1.6 );参数说明&#xff1a;nfeatures&#xff1a;类型&#x…

家政预约小程序数据库设计

目录 1 如何设计表结构1.1 用户表1.2 服务分类表1.3 服务表1.4 服务规格表1.5 订单表1.6 服务人员表1.7 评价表1.8 促销活动表1.9 投诉表1.10 年卡表1.11 派单表1.12 支付记录表1.13 通知记录表1.14 优惠券表1.15 用户优惠券表1.16 消息模板表1.17 积分记录表 经过一系列的设计…

kkfileview代理配置,Vue对接kkfileview实现图片word、excel、pdf预览

kkfileview部署 官网&#xff1a;https://kkfileview.keking.cn/zh-cn/docs/production.html 这个是官网部署网址&#xff0c;这里推荐大家使用docker镜像部署&#xff0c;因为我是直接找运维部署的&#xff0c;所以这里我就不多说明了&#xff0c;主要说下nginx代理配置&am…