首頁 > 軟體

一文詳解Spring載入properties檔案的方式

2022-06-11 18:00:25

spring第三方資源設定管理

  • DruidDataSource
  • ComboPooledDataSource

一、druid的資源設定管理

匯入druid的座標:

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.16</version>
        </dependency>

App執行輸出druid:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
import javax.sql.DataSource;
 
public class App {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        DataSource dataSource = (DataSource) ctx.getBean("dataSource");
        System.out.println(dataSource);
 
    }
}

applicationContext.xml設定:

設定資料來源物件作為spring管理的bean

<!--    管理DruidDataSource物件-->
   <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
           <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
           <property name="url" value="jdbc:mysql://localhost:3306/spring_db"/>
           <property name="username" value="root"/>
           <property name="password" value="root"/>
   </bean>

執行結果:

二、c3p0資源設定管理

maven遠端倉庫中找:

匯入c3p0的座標:

        <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
        </dependency>

c3p0還需要mysql的驅動,匯入mysql的座標:

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

App執行輸出與上面的一樣。

applicationContext.xml設定:

  <!--c3p0連線池物件-->
       <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
           <property name="driverClass" value="com.mysql.jdbc.Driver"/>
           <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring_db"/>
           <property name="user" value="root"/>
           <property name="password" value="root"/>
           <property name="maxPoolSize" value="1000"/>
       </bean>

也可以設定最大連線物件和其他需要設定資料。

執行結果:

三、載入properties檔案

1、開啟context名稱空間,總共5處標紅的地方需要修改為context。

<?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">

2、使用context名稱空間,載入指定properties檔案

<context:property-placeholder location="jdbc.properties"/>

properties組態檔,設定時要加jdbc,不然會和系統環境變數衝突,系統優先順序高:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring_db
jdbc.username=root
jdbc.password=root

3、使用${ }讀取載入的properties檔案中的屬性值

說明:idea自動識別${ }載入的屬性值,需要手工點選才可以查閱原始書寫格式

<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>

不載入系統屬性

可通過此種方法不載入系統屬性,就不會和系統屬性衝突:

system-properties-mode屬性:是否載入系統屬性

<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>

載入多個properties檔案

用逗號分隔可載入多個properties檔案:

<context:property-placeholder location="jdbc.properties,jdbc2.properties"/>

載入所有properties檔案

<context:property-placeholder location="*.properties"/>

載入properties檔案標準格式

classpath:*.properties:設定載入當前工程類路徑中的所有properties檔案

<context:property-placeholder location="classpath:*.properties"/>

從類路徑或jar包中搜尋並載入properties檔案

classpath*:*.properties:設定載入當前工程類路徑和當前工程所依賴的所有jar包中的所有properties檔案

<context:property-placeholder location="classpath*:*.properties"/>

以上就是一文詳解Spring載入properties檔案的方式的詳細內容,更多關於Spring載入properties檔案的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com