Spring在XML文件中(注册Bean),可以通过${属性名}使用properties文件配置的值;在代码中使用@Value注解读取properties的属性值。
一、Spinrg的Bean XML定义中,可以通过${属性名}使用properties文件配置的值
加载properties配置文件,如下是写法比较简单的方式:
单一配置文件加载:
<context:property-placeholder location="classpath:jdbc.properties"/>
使用通配符“*”配置多个文件,个人比较倾向于通配符的写法:
<context:property-placeholder location="classpath:conf/*.properties" />
加载多个配置文件通常还有如下的写法:
<bean id="propertyResources" class="java.util.ArrayList">
<constructor-arg>
<list>
<!-- 这里支持多种寻址方式:classpath和file -->
<value>classpath:/opt/demo/config/demo-db.properties</value>
<!-- 推荐使用file的方式引入,这样可以将配置和代码分离 -->
<value>file:/opt/demo/config/demo-mq.properties</value>
<value>file:/opt/demo/config/demo-remote.properties</value>
</list>
</constructor-arg>
</bean>
配置文件中的取值方式${属性名}
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="driverClassName" value="${jdbc.driver}" />
<property name="maxActive" value="10" />
<property name="minIdle" value="5" />
</bean>
二、使用@Value注解读取properties文件配置的值,再给字段赋值
@Value的值有三种类型,#{} 、${} 和 #{'${}'} ,其实是#{}和${}这两种类型,#{'${}'} 这种是前两种的嵌套使用
1、 #{expression?:default value}
properties配置文件中的属性名称不能带点,否则取不到值,会报错。如下案例其中prop为spring配置文件中的bean ID值。
这种类型的Value值,是#{}里面嵌套${}使用,所以必须按照上述的(1)(2)两种类型的实现方式,配置properties文件,才可以使用这种方式的值
@Value("#{'${age}'}")
转载:https://blog.csdn.net/yh_zeng2/article/details/76222905
三、 PropertyPlaceholderConfigurer 对properties文件中加密value解密
class代码,这样 ${jdbc.password} 获取的就是解密后的值了
联系客服