春天使用PropertyPlaceholderConfigurer读取文件的方法

  介绍

这篇文章主要介绍了弹簧使用PropertyPlaceholderConfigurer读取文件的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

<强>一。简介

大型项目中,我们往往会对我们的系统的配置信息进行统一管理,一般做法是将配置信息配置与一个cfg。属性的文件中,然后在我们系统初始化的时候,系统自动读取cfg。属性配置文件中的键值(键值对),然后对我们系统进行定制的初始化。

那么一般情况下,我们使用的java.util。属性,也就是java自带的。往往有一个问题是,每一次加载的时候,我们都需要手工的去读取这个配置文件,一来编码麻烦,二来代码不优雅,往往我们也会自己创建一个类来专门读取,并储存这些配置信息。

对于web项目来说,可以通过相对路径得到配置文件的路径,而对于可执行项目,在团队开发中就需要根据各自的环境来指定属性配置文件的路径了。对于这种情况可以将配置文件的路径放在java虚拟机JVM的自定义变量(运行时参数)中,例如:-Ddev.config=/dev。属性寻找的是本机根目录下

春天中提供着一个PropertyPlaceholderConfigurer,这个类是BeanFactoryPostProcessor的子类。其主要的原理在是.Spring容器初始化的时候,会读取xml或者注释对Bean进行初始化。初始化的时候,这个PropertyPlaceholderConfigurer会拦截Bean的初始化,初始化的时候会对配置的$ {pname}进行替换,根据我们属性中配置的进行替换。从而实现表达式的替换操作。

<强>二。XML方式

方式1

& lt; ? xml  version=?.0“,编码=癠TF-8" ?祝辞& lt; beans  xmlns=? http://www.springframework.org/schema/beans",,,,, xmlns: xsi=? http://www.w3.org/2001/XMLSchema-instance",,,,, xsi: schemaLocation=癶ttp://www.springframework.org/schema/beans ,,, http://www.springframework.org/schema/beans/spring-beans.xsd"祝辞,,& lt; bean 类=皁rg.springframework.beans.factory.config.PropertyPlaceholderConfigurer"在,,,,& lt; !——,对于读取一个配置文件采取的方案,——比,,,,,& lt; !——& lt; property  name=發ocation",价值=https://www.yisu.com/zixun/"类路径:db.properties "/> - -> <属性名="位置"> <列表> <价值>类路径:db。<属性/值> <价值>类路径:db2。<属性/值>   # db。jdbc.driverClass==net.sourceforge.jtds.jdbc属性。司机jdbc.url=jdbc: mysql://localhost: 3306/测试?jdbc。用户名=jdbc.password=123456   # db2。属性name==年龄23   进口org.junit.Test;进口org.junit.runner.RunWith;进口org.springframework.beans.factory.annotation.Value;进口org.springframework.test.context.ContextConfiguration;进口org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration(“类路径:spring-context.xml”)公开课TestPropertyPlaceHoder2 {@ value (" $ {jdbc.username} ")私人字符串的用户名;@ value (" $ {jdbc.password} ")私人密码字符串;@ value(" ${名称}")私人字符串名称;@ value(" ${时代}")私人int年龄;@Test公共空testResource () {system . out。println(“用户名:“+用户名);system . out。println(“密码:”+密码);system . out。println(“名字:”+名字);system . out。println(“年龄:”+年龄);}}/*用户名:anqi密码:123456姓名:anqi年龄:23 */

方式2

& lt; ? xml  version=?.0“,编码=癠TF-8" ?祝辞,& lt; beans  xmlns=? http://www.springframework.org/schema/beans",,,,,,,,, & lt;上下文:property-placeholder 位置=袄嗦肪?db.properties,类路径:db2.properties"/祝辞,& lt;/beans>

注意:我们知道不论是使用PropertyPlaceholderConfigurer还是通过背景:property-placeholder这种方式进行实现,都需要记住,春天框架不仅仅会读取我们的配置文件中的键值对,而且还会读取Jvm初始化的一下系统的信息。有时候,我们需要将配置关键定一套命名规则,例如

jdbc.username

jdbc。密码

同时,我们也可以使用下面这种配置方式进行配置,这里我配永远的意思是不读取系统配置信息。

& lt;上下文:property-placeholder 位置=袄嗦肪?db.properties,类路径:db2.properties",,,,,,,, system-properties-mode=癗EVER"/祝辞

SYSTEM_PROPERTIES_MODE_FALLBACK:在解析一个占位符的变量的时候。假设不能获取到该变量的值,就会拿系统属性来尝试,,SYSTEM_PROPERTIES_MODE_OVERRIDE:在解析一个占位符的时候。会先用系统属性来尝试,然后才会用指定的属性文件,,SYSTEM_PROPERTIES_MODE_NEVER:从来都不会使用系统属性来尝试。

春天使用PropertyPlaceholderConfigurer读取文件的方法