Spring配置數據源流程與作用詳解
一、數據源的作用
- 數據源(連接池)是提高程序性能出現的
- 事先實例化數據源,初始化部分連接資源
- 使用連接資源時從數據源中獲取
- 使用完畢后將連接資源歸還給數據源
常見的數據源(連接池):DBCP、C3P0、BoneCP、Druid等
在JavaSE中的JDBC就是通過數據源獲取數據庫中的數據
二、數據源手動創(chuàng)建
1、數據源的開發(fā)步驟
導入數據源的坐標和數據庫的坐標
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>創(chuàng)建數據源對象
設計數據源的基本連接數據
使用數據源獲取連接資源和歸還連接資源
2、手動創(chuàng)建c3p0數據源
@Test
public void test01() throws PropertyVetoException, SQLException {
//創(chuàng)建數據源
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//設置數據庫連接參數
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/atm");
dataSource.setUser("root");
dataSource.setPassword("123456");
//獲取連接對象
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}3、手動創(chuàng)建druid數據源
@Test
public void test02() throws SQLException {
//創(chuàng)建數據源
DruidDataSource dataSource = new DruidDataSource();
//設置數據庫連接參數
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/atm");
dataSource.setUsername("root");
dataSource.setPassword("123456");
//獲取連接對象
DruidPooledConnection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
4、通過properties配置文件創(chuàng)建連接池
上述手動創(chuàng)建數據源的過程中顯而易見出現一個問題,那就是代碼的維護性較差,倘若需要修改數據庫的數據,當java程序進行編寫就變成了字節(jié)碼文件,修改字節(jié)碼文件是比較困難的,不利于系統(tǒng)的維護
通過使用properties配置文件來創(chuàng)建連接池就可以較好地解決此類問題
在resources文件夾下創(chuàng)建相對應的properties配置文件,在里面編寫數據庫連接參數
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/atm
jdbc.username=root
jdbc.password=123456
在java程序中獲取properties配置文件的數據,并給它設置數據庫連接參數
@Test
public void test3() throws Exception {
//加載類路徑下的jdbc.properties
ResourceBundle jdbc = ResourceBundle.getBundle("jdbc");
//創(chuàng)建數據源
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//設置數據庫連接參數
dataSource.setDriverClass(jdbc.getString("jdbc.driver"));
dataSource.setJdbcUrl(jdbc.getString("jdbc.url"));
dataSource.setUser(jdbc.getString("jdbc.username"));
dataSource.setPassword(jdbc.getString("jdbc.password"));
//獲取連接對象
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
5、通過spring配置數據源
在spring框架中,spring框架的容器可以完成DataSource的創(chuàng)建
- DataSource有無參數構造方法,而spring默認是通過無參構造方法實例化對象
- DataSource要想使用通過set方法來設置數據庫連接信息,spring是可以通過set方法進行字符串的注入
<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/test"/> <property name="user" value="root"/> <property name="password" value="123456"/> </bean>
配置完spring的配置文件的,就可以在java程序中獲取bean容器返回的DataSource對象
@Test
public void test4() throws SQLException {
ApplicationContext app = new ClassPathXmlApplicationContext("applicatonContext.xml");
DataSource dataSource = (DataSource) app.getBean("dataSource");
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
6、通過spring抽取jdbc配置文件
在實際開發(fā)過程中,并不習慣在spring配置文件中把數據庫的相關參數寫死,而是將它寫在properties配置文件中,spring配置文件通過抽取properties配置文件從而獲取數據庫相關參數
要先抽取properties配置文件的相關數據,首先要引入context命名空間和約束路徑
命名空間:xmlns:context=“http://www.springframework.org/schema/context”
約束路徑:http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd

<context:property-placeholder location="jdbc.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
erty name=“jdbcUrl” value=" j d b c . u r l " / > < p r o p e r t y n a m e = " u s e r " v a l u e = " {jdbc.url}"/> <property name="user" value=" jdbc.url"/><propertyname="user"value="{jdbc.username}"/>
> **相關參數就像javaweb中的EL表達是那些編寫,即可獲取相對應的數據**
到此這篇關于Spring配置數據源流程與作用詳解的文章就介紹到這了,更多相關Spring配置數據源內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java中的notyfy()和notifyAll()的本質區(qū)別
很多朋友對java中的notyfy()和notifyAll()的本質區(qū)別不了解,今天小編抽空給大家整理一篇教程關于Java中的notyfy()和notifyAll()的本質區(qū)別,需要的朋友參考下吧2017-02-02
微服務Spring Boot 整合 Redis 實現UV 數據統(tǒng)計的詳
這篇文章主要介紹了微服務Spring Boot 整合 Redis 實現 UV 數據統(tǒng)計,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01
mysql+spring+mybatis實現數據庫讀寫分離的代碼配置
今天小編就為大家分享一篇關于mysql+spring+mybatis實現數據庫讀寫分離的代碼配置,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03

