Spring 通過Spring容器獲得資料來源物件並改進
我們之前發現,可以把資料來源的基本連線配置配置進Spring的xml檔案中,這樣就可以通過Spring容器直接獲取配置好的資料來源了
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql:///test"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
</bean>
但是這樣會出現一個問題,那就是所有的配置都在Spring的配置檔案中,會導致很難找到要修改的欄位,而且,如果我們使用多個資料來源的話,每一個資料來源我們都需要修改一次;所以我們想辦法把這部分jdbc相關的配置拿出來
- 1.我們在src目錄下新建一個
jdbc.properties
檔案,將取出的配置資訊寫在上面
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///test
jdbc.username=root
jdbc.password=root
- 2.我們需要用到context名稱空間,和之前引入p名稱空間的方法一樣,在約束頭加入這樣一句
xmlns:context="http://www.springframework.org/schema/context"
- 3.使用context名稱空間的標籤,將properties檔案引入Spring容器
<!-- 載入jdbc.properties檔案 引入context名稱空間-->
<context:property-placeholder location="classpath:jdbc.properties"/>
- 4.將資料來源引入Spring容器,並且使用從properties存入的資料進行設定
這個用起來簡直和EL表示式一樣方便了,直接${存入的key}
就可以獲的對應的value了,我們一般稱他為spEL表示式需要注意的是,一般配置的時候都要加上字首,這樣就可以保證key值唯一,不然會報錯
<!-- 資料來源DataSource的配置 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"></property>
<property name="jdbcUrl" value="${jdbc.url}"></property>
<property name="user" value="${username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
雖然不同的資料來源的set方法不相同,初始使用的配置檔案也不同(比如C3P0使用xml),但是我們可以使用同一properties檔案設定基本連結配置,然後在Spring配置中加上不同的Bean.在修改的時候,我們只需要改一個配置,所有資料來源的配置都被修改了
回憶一下之前取properties資料的方法
使用ResourceBundle的靜態方法getBundle()獲取配置properties的資源束
然後就可以使用資源束的getString(key)來獲取value了
//讀取配置檔案,引數為properties的檔名(不帶字尾)
ResourceBundle rb = ResourceBundle.getBundle("jdbc");
String driver = rb.getString("jdbc.driver");
String url = rb.getString("jdbc.url");
String username = rb.getString("jdbc.username");
String password = rb.getString("jdbc.password");
另外的,Spring內建了一個資料來源
- 匯入spring-jdbc.jar和spring-tx.jar(事務相關)
它的使用方法和其他的差別不大
//建立資料來源物件
DriverManagerDataSource dataSource = new DriverManagerDataSource();
//設定資料庫的基本連線資訊
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql:///test");
dataSource.setUsername("root");
dataSource.setPassword("root");
//從資料來源中獲得連線資源
Connection connection = dataSource.getConnection();
相關文章
- Spring多資料來源獲取Spring
- Spring Boot 動態資料來源(Spring 註解資料來源)Spring Boot
- Spring中獲得dataSurce物件的方法Spring物件
- Spring多資料來源配置Spring
- Spring配置多資料來源Spring
- Spring Boot 配置多資料來源Spring Boot
- Spring Boot 多資料來源配置Spring Boot
- Spring系列之多個資料來源配置Spring
- 在jboss中為何SessionBean不能獲得資料來源?SessionBean
- Spring全家桶--單資料來源的配置Spring
- Spring是如何支援多資料來源的Spring
- Spring多資料來源管理實現原理Spring
- Spring 資料來源配置與應用薦Spring
- Spring AOP動態切換資料來源Spring
- Spring中通過Annotation來實現AOPSpring
- 基於Spring Boot與Spring Data JPA的多資料來源配置Spring Boot
- 使用Spring Boot配置JNDI資料來源 -Roy教程Spring Boot
- spring多資料來源下 事務不生效Spring
- 使用Spring Boot配置多個資料來源 - UdithSpring Boot
- Spring Boot 原始碼分析 資料來源 + Mybatis 配置Spring Boot原始碼MyBatis
- spring 配置多個資料來源的檔案Spring
- spring資料來源c3p0配置Spring
- Spring 多資料來源 AOP 動態切換Spring
- Spring+MyBatis多資料來源配置實現SpringMyBatis
- Spring 的AbstractRoutingDataSource實現多資料來源Spring
- Spring系列 之資料來源的配置 資料庫 資料來源 連線池的區別Spring資料庫
- 談談Spring Boot 資料來源載入及其多資料來源簡單實現Spring Boot
- Spring Boot MyBatis 動態資料來源切換、多資料來源,讀寫分離Spring BootMyBatis
- 通過NameValuePairsValueProvider物件來獲取指定字首的KeyAIIDE物件
- 【教程】Spring+Mybatis環境配置多資料來源SpringMyBatis
- spring-data-redis 動態切換資料來源SpringRedis
- Spring Boot與多資料來源那點事兒~Spring Boot
- spring-boot-route(十)多資料來源切換Springboot
- 實現Spring動態註冊多資料來源Spring
- spring-mybatis專案搭建(支援多資料來源)SpringMyBatis
- Spring實現多資料來源動態切換Spring
- 怎樣在spring中配置proxool資料來源?薦Spring
- 如何透過Spring Data/EntityManager/Session直接獲取DTO資料?SpringSession