Spring載入配置檔案propertoies中util:properties和context:property-placeholder區別
util:properties和context:property-placeholder標籤都可以用來獲取外部配置檔案,載入到Spring容器,通過Spring容器來管理獲取外部配置檔案中的內容
前面
準備jdbc.properties
database.url=jdbc:mysql://localhost/smaple
database.driverClassName=com.mysql.jdbc.Driver
database.user=root
database.password=123
一、util:properties
全部屬性
它是以宣告bean方式來使用,建立了一個bean,下面使用的時候通過SpEL表示式#{}獲取bean的屬性。
<!-- util:properties形式載入 db.properties -->
<util:properties id="config" location="classpath:jdbc.properties" />
<!-- 配置Druid連線池 -->
<bean id="ds" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<!-- 基本屬性 driverClassName、url、user、password -->
<property name="driverClassName" value="#{jdbc.driverClassName}"/>
<property name="url" value="#{jdbc.url}" />
<property name="username" value="#{jdbc.username}" />
<property name="password" value="#{jdbc.password}" />
</bean>
需要注意,這種方式需要在spring配置檔案頭部宣告
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"
二、context:property-placeholder
它是將配置檔案載入至spring上下文中,然後通過${}取得值,常用於bean的屬性上
<!--context:property-placeholder形式載入 db.properties-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 配置Druid連線池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<!-- 基本屬性 driverClassName、url、user、password -->
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
如果有多個properties,可以使用萬用字元:<context:property-placeholder location="classpath*:/*.properties"/>
三、配置成bean的形式載入jdbc.properties
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<!--可以配置多個資原始檔 -->
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
四.Spring中配置和讀取多個Properties檔案
1.資料庫配置檔案demo-db.properties:
database.url=jdbc:mysql://localhost/smaple
database.driver=com.mysql.jdbc.Driver
database.user=root
database.password=123
2.訊息服務配置檔案demo-mq.properties:
#congfig of ActiveMQ
mq.java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory
mq.java.naming.provider.url=failover:(tcp://localhost:61616?soTimeout=30000&connectionTimeout=30000)?jms.useAsyncSend=true&timeout=30000
mq.java.naming.security.principal=
mq.java.naming.security.credentials=
jms.MailNotifyQueue.consumer=5
3.遠端呼叫的配置檔案demo-remote.properties:
remote.ip=localhost
remote.port=16800
remote.serviceName=test
4.載入多個Properties配置檔案
應用場景:Properties配置檔案不止一個,需要在系統啟動時同時載入多個Properties檔案。
配置方式:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 將多個配置檔案讀取到容器中,交給Spring管理 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!-- 這裡支援多種定址方式:classpath和file -->
<value>classpath:/opt/demo/config/db.properties</value>
<!-- 推薦使用file的方式引入,這樣可以將配置和程式碼分離 -->
<value>file:/opt/demo/config/mq.properties</value>
<value>file:/opt/demo/config/demo-remote.properties</value>
</list>
</property>
</bean>
<!-- 使用MQ中的配置 -->
<bean id="MQJndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">${mq.java.naming.factory.initial}</prop>
<prop key="java.naming.provider.url">${mq.java.naming.provider.url}</prop>
<prop key="java.naming.security.principal">${mq.java.naming.security.principal}</prop>
<prop key="java.naming.security.credentials">${mq.java.naming.security.credentials}</prop>
<prop key="userName">${mq.java.naming.security.principal}</prop>
<prop key="password">${mq.java.naming.security.credentials}</prop>
</props>
</property>
</bean>
</beans>
我們也可以將配置中的List抽取出來:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- 將多個配置檔案位置放到列表中 -->
<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>
<!-- 將配置檔案讀取到容器中,交給Spring管理 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations" ref="propertyResources" />
</bean>
<!-- 使用MQ中的配置 -->
<bean id="MQJndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">${mq.java.naming.factory.initial}</prop>
<prop key="java.naming.provider.url">${mq.java.naming.provider.url}</prop>
<prop key="java.naming.security.principal">${mq.java.naming.security.principal}</prop>
<prop key="java.naming.security.credentials">${mq.java.naming.security.credentials}</prop>
<prop key="userName">${mq.java.naming.security.principal}</prop>
<prop key="password">${mq.java.naming.security.credentials}</prop>
</props>
</property>
</bean>
</beans>
推薦部落格:Spring載入Properties配置檔案的四種方式
相關文章
- spring配置檔案中分別使用多個properties檔案Spring
- 載入和儲存properties檔案
- Spring - 配置檔案中的classpath: 和 classpath*: 的區別Spring
- springboot 配置檔案 .properties和.yml的寫法區別Spring Boot
- properties檔案載入器
- spring中<context:property-placeholder/>一個坑SpringContext
- 載入Java專案中scr下的properties檔案Java
- Spring Boot @PropertySource 載入指定配置檔案、@ImportResource 匯入Spring 配置檔案Spring BootImport
- spring application.xml中載入配置檔案SpringAPPXML
- java中讀取.properties配置檔案Java
- Profile配置和載入配置檔案
- spring 載入配置檔案的方式Spring
- spring 載入不了jdbc.properties檔案的資料問題SpringJDBC
- 【Java Web】——配置檔案的格式之xml和properties的區分JavaWebXML
- 載入com.microsoft.util.transliteration.properties錯誤,請教!ROS
- Spring context:property-placeholder 一些坑SpringContext
- Maven中的-D(Properties屬性)和-P(Profiles配置檔案)Maven
- Spring Boot 框架中配置檔案 application.properties 當中的所有配置大全Spring Boot框架APP
- spring配置中classpath和classpath*的區別Spring
- spring boot啟動載入外部配置檔案Spring Boot
- spring boot更改配置檔案 application.properties的位置Spring BootAPP
- springboot基於properties檔案型別安全配置Spring Boot型別
- java.util.PropertiesJava
- Solaris 10中/etc/fstab和/etc/mntab配置檔案的區別
- linux中的配置檔案/etc/profile和.bashfile 的區別Linux
- Spring多資原始檔properties的配置Spring
- MyBatis載入配置檔案MyBatis
- Spring中注入List,Set,Map,Properties的xml檔案配置方法SpringXML
- log4j.properties 配置檔案
- spring註解中使用properties檔案Spring
- Spring Boot、Nacos配置檔案properties、yml、yaml的優先順序Spring BootYAML
- JAVA載入配置檔案方法Java
- 載入常量-從檔案中載入
- java進階(36)--IO和Properties聯合使用(配置檔案)Java
- WebLogic NodeManager 配置檔案nodemanager.propertiesWeb
- ArcEngine中載入和讀取Style檔案
- 【SSM框架整合】專案xml檔案、properties等檔案的配置SSM框架XML
- Java 對 properties 檔案操作 (ResourceBundle 類和 Properties 類)Java