spring中context:property-placeholder

Spring配置数据源(连接池) 一.数据源(连接池的作用)1.数据源(连接池)是提高程序性能如2.事先实例化数据源,初始部分连接资源3.使用来连接资源时从数据源获取4.使用完毕时将连接资源归还给数据源二、数据源的开发步骤步骤:① 导入数据源的坐标和数据库驱动坐标② 创建数据源对象③ 设置数据源的基本连接数据④ 使用数据源获取连接资源和归还连接资源传统方式写法1.导入依赖坐标和数据驱动坐标2.创建数据源的手动创建2.1 创建C3p0连接池2.2创建Druid连接池。 阅读详情

1.有些参数在某些阶段中是常量

    比如 :a、在开发阶段我们连接数据库时的连接url,username,password,driverClass等 

                 b、分布式应用中client端访问server端所用的server地址,port,service等  

                  c、配置文件的位置

2.而这些参数在不同阶段之间又往往需要改变

    比如:在项目开发阶段和交付阶段数据库的连接信息往往是不同的,分布式应用也是同样的情况。

期望:能不能有一种解决方案可以方便我们在一个阶段内不需要频繁书写一个参数的值,而在不同阶段间又可以方便的切换参数配置信息

解决:spring3中提供了一种简便的方式就是context:property-placeholder/元素

只需要在spring的配置文件里添加一句:<context:property-placeholder location="classpath:jdbc.properties"/> 即可,这里location值为参数配置文件的位置,参数配置文件通常放在src目录下,而参数配置文件的格式跟java通用的参数配置文件相同,即键值对的形式,例如:

#jdbc配置

test.jdbc.driverClassName=com.mysql.jdbc.Driver
test.jdbc.url=jdbc:mysql://localhost:3306/test
test.jdbc.username=root
test.jdbc.password=root

行内#号后面部分为注释

应用:

1.这样一来就可以为spring配置的bean的属性设置值了,比如spring有一个jdbc数据源的类DriverManagerDataSource

在配置文件里这么定义bean:

<bean id="testDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="${test.jdbc.driverClassName}"/>
    <property name="url" value="${test.jdbc.url}"/>
    <property name="username" value="${test.jdbc.username}"/>
    <property name="password" value="${test.jdbc.password}"/>
</bean>

2.甚至可以将${ }这种形式的变量用在spring提供的注解当中,为注解的属性提供值

---------------------------------------------------------  

外在化应用参数的配置

在开发企业应用期间,或者在将企业应用部署到生产环境时,应用依赖的很多参数信息往往需要调整,比如LDAP连接、RDBMS JDBC连接信息。对这类信息进行外在化管理显得格外重要。PropertyPlaceholderConfigurer和PropertyOverrideConfigurer对象,它们正是担负着外在化配置应用参数的重任。

  <context:property-placeholder/>元素

PropertyPlaceholderConfigurer实现了BeanFactoryPostProcessor接口,它能够对<bean/>中的属性值进行外在化管理。开发者可以提供单独的属性文件来管理相关属性。比如,存在如下属性文件,摘自userinfo.properties。
db.username=scott
db.password=tiger

如下内容摘自propertyplaceholderconfigurer.xml。正常情况下,在userInfo的定义中不会出现${db.username}、${db.password}等类似信息,这里采用PropertyPlaceholderConfigurer管理username和password属性的取值。DI容器实例化userInfo前,PropertyPlaceholderConfigurer会修改userInfo的元数据信息(<bean/>定义),它会用userinfo.properties中db.username对应的scott值替换${db.username}、db.password对应的tiger值替换${db.password}。最终,DI容器在实例化userInfo时,UserInfo便会得到新的属性值,而不是${db.username}、${db.password}等类似信息。


  1. <bean id="propertyPlaceholderConfigurer"   
  2.         class="org.springframework.beans.factory.config.  
  3. PropertyPlaceholderConfigurer">  
  4.     <property name="locations">  
  5.         <list>  
  6.             <value>userinfo.properties</value>  
  7.         </list>  
  8.     </property>  
  9. </bean>  
  10.  
  11. <bean name="userInfo" class="test.UserInfo">  
  12.   <property name="username" value="${db.username}"/>  
  13.   <property name="password" value="${db.password}"/>  
  14. </bean> 

通过运行并分析PropertyPlaceholderConfigurerDemo示例应用,开发者能够深入理解PropertyPlaceholderConfigurer。为简化PropertyPlaceholderConfigurer的使用,Spring提供了<context:property-placeholder/>元素。下面给出了配置示例,启用它后,开发者便不用配置PropertyPlaceholderConfigurer对象了。


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

PropertyPlaceholderConfigurer内置的功能非常丰富,如果它未找到${xxx}中定义的xxx键,它还会去JVM系统属性(System.getProperty())和环境变量(System.getenv())中寻找。通过启用systemPropertiesMode和searchSystemEnvironment属性,开发者能够控制这一行为。

Spring中<context:property-placeholder>标签遇到的问题 context:property-placeholder标签 context:property-placeholder标签,提供了将spring.xml配置文件中一些配置数据提取成properties文件的能力,它能让程序员将一些信息(例如数据库链接信息)统一写在properties文件中,然后再在Spring.xml引入这些数据。 db.properties文件: driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/exam usern 阅读详情

相关推荐

NFC门禁卡复制全解析:从M1卡到UID卡的攻防实践

本文深入解析了NFC门禁卡的安全机制与攻防实践。从M1卡基于Crypto1算法的原理漏洞讲起,详细阐述了利用Proxmark3等工具进行侦听、破解密钥及使用UID卡进行复制的完整攻击链条。同时,为防御方提供了从升级CPU卡、启用全扇区认证到部署多因子验证的系统性防护策略,旨在帮助管理员构建更稳固的物理安全防线。

weixin_29182481的博客 1404

spring中context:property-placeholder标签详解

spring中context:property-placeholder标签的使用说明 1,有些参数在某些阶段中是常量。 在开发阶段我们连接数据库时的url,username,password等信息 分布式应用中client端的server地址,端口等 这些参数在不同阶段之间又住住需要改变 期望:有一种方案可以方便我们在一个阶段内不需要频繁写一个参数的值,而在不同阶段间又可以方便的切换参数的配置信息 解决:spring3中提供了一种简便的方式就是``元素 只需要在spring配置文件中添加一句: <

qq_43842093的博客 8788

《Sigrity SystemSI 2023+LPDDR4仿真自学笔记》(一)创建工程(Part1)

为了加强SystemSI 2023软件的熟悉度,咱们完整的走一个仿真全流程。

weixin_45199544的博客 6346

context:property-placeholder

这个在spring中配置文件中是非常常用的。 context:property-placeholder大大的方便了我们数据库的配置。 只需要在spring的配置文件里添加一句:?即可,这里location值为参数配置文件的位置,参数配置文件通常放在src目录下,而参数配置文件的格式跟java通用的参数配置文件相同,即键值对的形式,例如: #jdbc配置 test.jdbc.driverCl

学而不思则罔 思而不学则殆 2万+

Microchip Studio 7.0 从零开始:下载、安装到首个AVR工程实战

本文为AVR单片机开发新手提供了Microchip Studio 7.0的完整入门指南。从官方下载、避坑安装,到创建首个GCC C工程、编写LED闪烁代码,再到项目配置、仿真调试与程序烧录,手把手带你完成从零到一的实战过程,是掌握AVR开发环境的必备教程。

weixin_29200741的博客 524

【接地系统篇】电力系统接地技术详解:从基本原理到实际应用

接地是为电流返回电源提供的一条低阻抗通道。简单来说,就是为故障电流修建一条"安全回家"的路,防止电流通过人体或其他不应带电的部件。接地系统选择原则安全性优先:TN-S系统安全性最高,适合重要场所经济性考虑:TN-C系统成本最低,适合一般工业连续性要求:IT系统供电连续性最好,适合特殊场所灵活性选择:TN-C-S系统兼顾经济与安全,应用最广。

2301_81299416的博客 2236

spring中context:property-placeholder/元素

1.有些参数在某些阶段中是常量     比如:a、在开发阶段我们连接数据库时的连接url,username,password,driverClass等                   b、分布式应用中client端访问server端所用的server地址,port,service等                     c、配置文件的位置 2.而这些参数在不同阶段之间又往往需要改变

l345480242的专栏 8825

AI与Agent赋能下的软件测试变革:面向未来测试工程师的工作方法论

AI Agent 软件测试 测试 software testing test

测试技师的自我修养 1239

解读Spring的context:property-placeholder

解读context:property-placeholder的实现原理,并结合@Value理清配置源加载、占位符处理处理、属性自动赋值等过程的来龙去脉。

一群专业码农的笔记本 3167

PostgreSQL隐式类型转换全解析:告别operator does not exist

强类型数据库是现代数据系统的基石,它在带来严谨性的同时,也常常让开发者在类型不匹配报错前束手无策。当一条SQL因bigint与text比较而抛出operator does not exist时,根源往往在于对数据库隐式转换规则的误解。PostgreSQL通过pg_cast系统表将转换划分为隐式、赋值与显式三个级别,并依据操作符解析逻辑决定是否自动提升类型。理解这些机制,不仅能快速定位JOIN、UNION、函数调用等场景下的类型错误,还能帮助开发者合理使用EXPLAIN VERBOSE、pg_typeof等工

weixin_29587015的博客 307

解决RabbitMq登录时报出Not management user(Login failed)错误以及rabbitmqctl(RabbitMq)新增用户和用户角色权限

解决RabbitMq登录时报出Not management user(Login failed)错误以及rabbitmqctl(RabbitMq)查看用户权限、新增用户和用户角色权限。

念兮为美 7479

spring中context:property-placeholder解析

spring中context:property-placeholder解析

找寻你的足迹123 2172

数据挖掘实战-基于LSTM时间序列模型的香烟销售预测分析

本文介绍了基于LSTM时间序列模型的香烟销售预测分析实验。实验背景为烟草市场竞争激烈,企业需提高销售预测准确性以优化生产、库存和营销策略。LSTM模型因其处理长序列数据的能力被选为预测工具。实验步骤包括数据准备、特征工程、模型构建、训练与评估及结果分析。数据集来自某市门店的销售数据,技术工具为Python 3.9和Jupyter Notebook。实验过程涵盖数据导入、预处理、产品销售与区域销售分析、销售预测(包括销售额、销量、利润及海通店销售额预测)。

m0_64336780的博客 8953

Spring中配置项context:property-placeholder详解

1.有些参数在某些阶段中是常量 比如: a、在开发阶段我们连接数据库时的连接url,username,password,driverClass等 b、分布式应用中client端访问server端所用的server地址,port,service等 c、配置文件的位置 2.而这些参数在不同阶段之间又往往需要改变 比如:在项目开发阶段和交付阶段数据库的连接信息往往是不同...

信阳农夫的专栏 4610

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

spring3的context:property-placeholder详解

<context:property-placeholder location="classpath:jdbc.properties" />可以方便我们在一个阶段内不需要频繁书写一个参数的值,而在不同阶段间又可以方便的切换参数配置信息

陈炎龙的专栏 956

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

spring 配置文件中的占位符 使用 context:property-placeholder

这个在spring中配置文件中是非常常用的。 context:property-placeholder大大的方便了我们数据库的配置。 [html] view plain copy 只需要在spring的配置文件里添加一句:context:property-placeholder?location="classpath:jdbc.proper

做最好的自己 2850

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

spring中context:property-placeholder标签的使用说明

1,有些参数在某些阶段中是常量。 在开发阶段我们连接数据库时的url,username,password等信息 分布式应用中client端的server地址,端口等 这些参数在不同阶段之间又住住需要改变 期望:有一种方案可以方便我们在一个阶段内不需要频繁写一个参数的值,而在不同阶段间又可以方便的切换参数的配置信息 解决:spring3中提供了一种简便的方式就是&lt;content:...

a3060858469的博客 3万+

日常踩坑笔记:spring的context:property-placeholder标签

背景: 原来的项目一直跑着没有问题,今天突然想在原有项目的基础上,加上redis进行数据的缓存,原来项目的架构就是传统的SSM框架,于是,大刀阔斧的开始改装了。。。 编写redis的配置文件——redis.properties。。。 编写redis的xml配置文件——redis-context.xml。。。 在spring的主配置文件(我的ssm项目本来只有这么一个xml配置文件...

banuoyin3229的博客 310

spring中context:property-placeholder元素

一、spring中context:property-placeholder元素    1.有些参数在某些阶段中是常量                 a、在开发阶段我们连接数据库时的连接url,username,password,driverClass等                 b、分布式应用中client端访问server端所用的server地址,port,service等

漂流幻境 1548

Spring加载配置文件propertoies中util:properties和context:property-placeholder区别

前言 util:properties和context:property-placeholder标签都可以用来获取外部配置文件,加载到Spring容器,通过Spring容器来管理获取外部配置文件中的内容 准备工作 准备jdbc.properties链接数据库配置 database.url=jdbc:mysql://localhost/smaple database.driver...

Thinkingcao的专栏 1486

spring 中util:properties和context:property-placeholder区别和@Value取不到值情况

一、util:properties的用法 需要在xml顶部加入: 在beans描述头的 xmlns 里加入: xmlns:util="http://www.springframework.org/schema/util" 在 xsi:schemaLocation 里追加 http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd <util:pro

曾令胜的博客 1190

spring applicationContext.xml 中context:property-placeholder

spring applicationContext.xml 中context:property-placeholder 一. 1.有些参数在某些阶段中是常量     比如 :a、在开发阶段我们连接数据库时的连接url,username,password,driverClass等                   b、分布式应用中client端访问server端所用的server地址,po

lululove19870526的专栏 1375

spring的context:property-placeholder属性

问题: 把一些经常改动的配置属性写死是件很Low的事, 那么问题来了, 有什么简单方便的方式呢, 用纯Java去读取配置文件已经显得繁杂。 答案: Spring3提供了很简单的方式context:property-placeholder 只需要在spring的配置文件里添加一句: 一下子, 世界就美好了, 上一句是Windows中的配置, 下一句是Linux的配置。

wenniuwuren 1202

Spring配置文件报错 :通配符的匹配很全面, 但无法找到元素 ‘context:property-placeholder‘ 的声明

在Spring导入连接数据库的配置文件的时候,使用idea创建配置文件有时候会报XmlBeanDefinitionStoreException异常。我们需要在修改配置文件的最后一句后面追加。这是idea自动生成的配置文件,报错;

m0_65122509的博客 1285

Spring配置:用context:property-placeholder替换PropertyPlaceholderConfigurer

Spring配置:用context:property-placeholder替换PropertyPlaceholderConfigurer 2015年02月03日 10:31:18 阅读数:1714 1、有时候需要从properties文件中加载配置,以前的方式是这样的:     &lt;bean id="jdbcProperties" class="org.springfra...

f45056231p的博客 1314
上一篇: Spring MappingJacksonHttpMessageConverter
下一篇: mybatis与spring3.1整合
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值