一文詳解Spring加載properties文件的方式

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文件的資料請關註WalkonNet其它相關文章!

推薦閱讀: