PropertyPlaceholderConfigurer,系统配置添加到操作系统环境变量

1、前段时间项目终于到一个这样的难题,项目经理说系统资源连接信息,不能明文存在项目中,有一些同时开始思考着,配置文件加密之类的东西,后来突然闪现一个想法,

既然配置信息不让明文存在,我直接不要配置文件了,这不更直接吗?当时的主要思路就是把系统的配置信息存储到操作系统的环境变量中,问题的关键是怎么从环境变量中获取。

2、下面我们来介绍一下传统的web项目,spring配置及数据库等连接信息

<!-- 系统配置信息,从操作系统环境变量获取 -->
<context:property-placeholder ignore-resource-not-found="true" location="classpath*:/properties/application*.properties" />


application.properties文件中存储的就是数据库等一系列的连接信息,这里粘贴出来一部分供大家参考:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.pcsearch.url=jdbc:mysql://127.0.0.1:3306/test
jdbc.pcsearch.username=root
jdbc.pcsearch.password=root


在spring配置数据源时,spring中的配置信息如下:

<bean id="baseDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
	<property name="driverClass">
		<value>${jdbc.driver}</value>
	</property>
	<property name="jdbcUrl">
		<value>${jdbc.pcsearch.url}</value>
	</property>
	<property name="user">
		<value>${jdbc.pcsearch.username}</value>
	</property>
	<property name="password">
		<value>${jdbc.pcsearch.username}</value>
	</property>
	<!--连接池中保留的最大连接数。默认值: 15 -->
	<property name="maxPoolSize" value="${c3p0.maxPoolSize}" />
	<!-- 连接池中保留的最小连接数,默认为:3 -->
	<property name="minPoolSize" value="${c3p0.minPoolSize}" />
	<!-- 初始化连接池中的连接数,取值应在minPoolSize与maxPoolSize之间,默认为3 -->
	<property name="initialPoolSize" value="${c3p0.initialPoolSize}" />
	<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。默认值: 0 -->
	<property name="maxIdleTime" value="${c3p0.maxIdleTime}" />
	<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。默认值: 3 -->   
	<property name="acquireIncrement" value="${c3p0.acquireIncrement}" />
	<!--每60秒检查所有连接池中的空闲连接。默认值: 0,不检查 -->
	<property name="idleConnectionTestPeriod" value="${c3p0.idleConnectionTestPeriod}" />
	<!--c3p0全局的PreparedStatements缓存的大小。-->
	<property name="maxStatements" value="${c3p0.maxStatements}" />
</bean>

3、现在我们来研究一下,将配置信息存储到操作系统的环境变量中该如何修改:

<!-- 系统配置信息,从操作系统环境变量获取 -->
<context:property-placeholder ignore-resource-not-found="true" location="classpath*:/properties/application*.properties" /> 
修改为

<!-- 系统配置信息,从操作系统环境变量获取 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />


然后在操作系统中配置环境变量:



后面的el表达式取值和前面一样不用做任何改动,需要注意的是系统环境变量配置完之后需要冲洗eclipse,否则环境变量不能立即生效。


4、Spring的PropertyPlaceholderConfiguer类默认是打开的,我们可以不再spring中添加如下配置:

<!-- 系统配置信息,从操作系统环境变量获取 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />
,当然添加也不会出错,当项目中同时存在*.properties和PropertyPlaceholderConfiguer类时。spring会优先从操作系统的环境变量中获取。


相关参考文件:

http://blog.csdn.net/yakoo5/article/details/18089731

https://unmi.cc/spring-injection-system-properties-env/

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fjkxyl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值