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文件,才可以使用這種方式的值