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中<context:property-placeholder/>一個坑SpringContext
- Spring - 配置檔案中的classpath: 和 classpath*: 的區別Spring
- properties檔案載入器
- Spring Boot @PropertySource 載入指定配置檔案、@ImportResource 匯入Spring 配置檔案Spring BootImport
- Spring Boot 框架中配置檔案 application.properties 當中的所有配置大全Spring Boot框架APP
- Profile配置和載入配置檔案
- spring 載入不了jdbc.properties檔案的資料問題SpringJDBC
- springboot基於properties檔案型別安全配置Spring Boot型別
- java.util.PropertiesJava
- Spring Boot、Nacos配置檔案properties、yml、yaml的優先順序Spring BootYAML
- log4j.properties 配置檔案
- MyBatis載入配置檔案MyBatis
- Springboot載入配置檔案Spring Boot
- Java 對 properties 檔案操作 (ResourceBundle 類和 Properties 類)Java
- java進階(36)--IO和Properties聯合使用(配置檔案)Java
- JAVA載入配置檔案方法Java
- 【SSM框架整合】專案xml檔案、properties等檔案的配置SSM框架XML
- link和@import匯入css檔案的區別ImportCSS
- Java SpringBoot 載入 yml 配置檔案中字典項JavaSpring Boot
- 是時候搞清楚 Spring Boot 的配置檔案 application.properties 了!Spring BootAPP
- java Spring讀取properties檔案的注意點JavaSpring
- Spring Boot 應用使用 application.yml 和 application.properties 的區別Spring BootAPP
- Spring Cloud Alibaba基礎教程:Nacos配置的多檔案載入與共享配置SpringCloud
- spring和Mybatis的核心配置檔案SpringMyBatis
- 03.MyBatis學習-----全域性配置檔案_properties_引入外部配置檔案MyBatis
- SpringBoot 如何讓yml,properties配置檔案有提示Spring Boot
- idea配置檔案.properties中文亂碼顯示????Idea
- Java讀取properties配置檔案工具包Java
- Gradle 簽名的配置檔案 gradle.propertiesGradle
- SpringCloud入門之常用的配置檔案 application.yml和 bootstrap.yml區別SpringGCCloudAPPboot
- Idea編碼UTF-8中.properties 配置檔案中文亂碼Idea
- 載入常量-從檔案中載入
- [springboot]配置檔案載入順序Spring Boot
- Spring - 配置檔案中的特殊字元Spring字元
- a標籤與Blob下載檔案的區別和獲取檔案下載進度
- Spring boot 讀取properties檔案的四種方式Spring Boot
- spring cloud feign 檔案上傳和檔案下載SpringCloud
- Java開發學習(八)----IOC/DI配置管理第三方bean、載入properties檔案JavaBean