屬性文件——Java&Spring

屬性文件

什麼是屬性文件 ?

定義:一個擴展名爲properties文件,屬性文件都是以key-value(鍵值對)來保存文件的內容,如:log4j.properties,db.properties等。java

oracle.driverClassName=oracle.jdbc.driver.OracleDriver oracle.dburl=jdbc:oracle:thin:@localhost:1521:orcl oracle.username=dang oracle.psw=yeshicheng

屬性文件的應用場景?

企業主要做用和應用範圍舉例:
1.日誌文件信息,通常取名爲log4j.properties ;
2 數據庫鏈接信息,通常取名爲db.properties;
3.數據源的配置信息(鏈接池相關信息)web

Java如何讀取屬性文件?

第一步.讀取屬性文件第一步,建立一個屬性文件對象【Properties properties = new Properties();】
第二步.把Resource屬性文件轉換爲一個流對象【有兩種方式:1.經過文件輸入字節流;2.經過反射技術。】
第三步.向屬性文件對象賦值【有兩種方式賦值:setProperty(key, value)直接賦值和load(is)一次性加載賦值。】
第四步.獲取屬性文件中某一個屬性的值【getProperty(key)】spring

package spring201909; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class TestReadProperties { public static void main(String[] args) { try { // 第一步.讀取屬性文件第一步 建立一個屬性文件對象 //Properties保存數據和讀取數據的底層方式和Hashmap Hashtable同樣 //都是key-value方式來保存和經過key來讀取數據
Properties properties = new Properties(); //第二步.把Resource屬性文件轉換爲一個流對象 //getResourceAsStream中的Resource資源在本例子中指的是屬性文件 //固然,在別的例子中還能夠是xml,txt等多種資源文件 //BufferedInputStream就是提升讀取效率緩衝字節輸入流,是輸入字節流的包裝類 //第一種方法:根據屬性文件的路徑找到屬性文件,而且封裝爲文件輸入字節流 //InputStream is= // new BufferedInputStream(new FileInputStream("config/properties/db.properties")); //第二種方法:經過反射中,類對象的getResourceAsStream把資源轉換爲流對象
InputStream is = new BufferedInputStream(TestReadProperties.class.getResourceAsStream( "/properties/db.properties")); //第三步.向屬性文件對象賦值 // properties.setProperty(key, value)直接賦值異常麻煩並且工做量大 // load等於屢次調用setProperty這個方法 把is流對象表明的db.properties文件中的所有key和value一次次的保存到屬性文件中
properties.load(is); // 第四步.獲取屬性文件中某一個屬性的值
System.out.println(properties.getProperty("oracle.driverClassName")); } catch (IOException e) { e.printStackTrace(); } } }

 

如何在Spring容器中使用屬性文件?

第一步:加載db.properties屬性文件
1.1 首先改變頭文件,增長支持context標籤的spring-context.xsd文件和xml命名空間【xmlns:context="http://www.springframework.org/schema/context"】【http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd】
1.2 添加context標籤,將properties文件加載到上下文環境中【<context:property-placeholder location="classpath:properties/db.properties"/>】
第二步:經過表達式獲取屬性文件中的值,實現注入【${key}】數據庫

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 如何讓spring容器來幫助baseDao完成屬性文件和baseDao中的屬性對象properties關聯起來 -->
<!-- 第一步:加載db.properties屬性文件 1.1 首先改變頭文件,增長支持context標籤的spring-context.xsd文件【xmlns:context="http://www.springframework.org/schema/context"】 1.2 添加context標籤,將properties文件加載到上下文環境中【<context:property-placeholder location="classpath:properties/db.properties"/>】 classpath:表明對應編譯以後的目錄 若是是java工程表明bin目錄,若是是web工程 WebRoot\WEB-INF\classes目錄 properties/db.properties:表明準備從bin目錄或者classes目錄找到properties/db.properties -->
<context:property-placeholder location="classpath:properties/db.properties"/>
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<!-- 支持一次性導入多個屬性文件,通常而言就直接一次性多個導入便可 -->
<value>classpath:properties/db.properties</value>
<value>classpath:properties/log4j.properties</value>
</list>
</property>
</bean>
<!-- 第二步:經過這個dao來完成屬性對象的注入 -->
<bean id="studentJdbcDaoImpl" class="com.yijng.dao.impl.StudentJdbcDaoImpl">
<property name="properties">
<props>
<prop key="driverClassName">${oracle.driverClassName}</prop>
<prop key="dburl">${oracle.dburl}</prop>
<prop key="username">${oracle.username}</prop>
<prop key="psw">${oracle.psw}</prop>
<prop key="log4j">${log4j.infolevel}</prop>
</props>
</property>
</bean>
</beans>
相關文章
相關標籤/搜索