定義:一個擴展名爲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
第一步.讀取屬性文件第一步,建立一個屬性文件對象【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(); } } }
第一步:加載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>