Spring配置數(shù)據(jù)源流程與作用詳解
一、數(shù)據(jù)源的作用
- 數(shù)據(jù)源(連接池)是提高程序性能出現(xiàn)的
- 事先實(shí)例化數(shù)據(jù)源,初始化部分連接資源
- 使用連接資源時(shí)從數(shù)據(jù)源中獲取
- 使用完畢后將連接資源歸還給數(shù)據(jù)源
常見(jiàn)的數(shù)據(jù)源(連接池):DBCP、C3P0、BoneCP、Druid等
在JavaSE中的JDBC就是通過(guò)數(shù)據(jù)源獲取數(shù)據(jù)庫(kù)中的數(shù)據(jù)
二、數(shù)據(jù)源手動(dòng)創(chuàng)建
1、數(shù)據(jù)源的開(kāi)發(fā)步驟
導(dǎo)入數(shù)據(jù)源的坐標(biāo)和數(shù)據(jù)庫(kù)的坐標(biāo)
<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)建數(shù)據(jù)源對(duì)象
設(shè)計(jì)數(shù)據(jù)源的基本連接數(shù)據(jù)
使用數(shù)據(jù)源獲取連接資源和歸還連接資源
2、手動(dòng)創(chuàng)建c3p0數(shù)據(jù)源
@Test
public void test01() throws PropertyVetoException, SQLException {
//創(chuàng)建數(shù)據(jù)源
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//設(shè)置數(shù)據(jù)庫(kù)連接參數(shù)
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/atm");
dataSource.setUser("root");
dataSource.setPassword("123456");
//獲取連接對(duì)象
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}3、手動(dòng)創(chuàng)建druid數(shù)據(jù)源
@Test
public void test02() throws SQLException {
//創(chuàng)建數(shù)據(jù)源
DruidDataSource dataSource = new DruidDataSource();
//設(shè)置數(shù)據(jù)庫(kù)連接參數(shù)
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/atm");
dataSource.setUsername("root");
dataSource.setPassword("123456");
//獲取連接對(duì)象
DruidPooledConnection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
4、通過(guò)properties配置文件創(chuàng)建連接池
上述手動(dòng)創(chuàng)建數(shù)據(jù)源的過(guò)程中顯而易見(jiàn)出現(xiàn)一個(gè)問(wèn)題,那就是代碼的維護(hù)性較差,倘若需要修改數(shù)據(jù)庫(kù)的數(shù)據(jù),當(dāng)java程序進(jìn)行編寫(xiě)就變成了字節(jié)碼文件,修改字節(jié)碼文件是比較困難的,不利于系統(tǒng)的維護(hù)
通過(guò)使用properties配置文件來(lái)創(chuàng)建連接池就可以較好地解決此類(lèi)問(wèn)題
在resources文件夾下創(chuàng)建相對(duì)應(yīng)的properties配置文件,在里面編寫(xiě)數(shù)據(jù)庫(kù)連接參數(shù)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/atm
jdbc.username=root
jdbc.password=123456
在java程序中獲取properties配置文件的數(shù)據(jù),并給它設(shè)置數(shù)據(jù)庫(kù)連接參數(shù)
@Test
public void test3() throws Exception {
//加載類(lèi)路徑下的jdbc.properties
ResourceBundle jdbc = ResourceBundle.getBundle("jdbc");
//創(chuàng)建數(shù)據(jù)源
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//設(shè)置數(shù)據(jù)庫(kù)連接參數(shù)
dataSource.setDriverClass(jdbc.getString("jdbc.driver"));
dataSource.setJdbcUrl(jdbc.getString("jdbc.url"));
dataSource.setUser(jdbc.getString("jdbc.username"));
dataSource.setPassword(jdbc.getString("jdbc.password"));
//獲取連接對(duì)象
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
5、通過(guò)spring配置數(shù)據(jù)源
在spring框架中,spring框架的容器可以完成DataSource的創(chuàng)建
- DataSource有無(wú)參數(shù)構(gòu)造方法,而spring默認(rèn)是通過(guò)無(wú)參構(gòu)造方法實(shí)例化對(duì)象
- DataSource要想使用通過(guò)set方法來(lái)設(shè)置數(shù)據(jù)庫(kù)連接信息,spring是可以通過(guò)set方法進(jìn)行字符串的注入
<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對(duì)象
@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、通過(guò)spring抽取jdbc配置文件
在實(shí)際開(kāi)發(fā)過(guò)程中,并不習(xí)慣在spring配置文件中把數(shù)據(jù)庫(kù)的相關(guān)參數(shù)寫(xiě)死,而是將它寫(xiě)在properties配置文件中,spring配置文件通過(guò)抽取properties配置文件從而獲取數(shù)據(jù)庫(kù)相關(guān)參數(shù)
要先抽取properties配置文件的相關(guān)數(shù)據(jù),首先要引入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}"/>
> **相關(guān)參數(shù)就像javaweb中的EL表達(dá)是那些編寫(xiě),即可獲取相對(duì)應(yīng)的數(shù)據(jù)**
到此這篇關(guān)于Spring配置數(shù)據(jù)源流程與作用詳解的文章就介紹到這了,更多相關(guān)Spring配置數(shù)據(jù)源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot多數(shù)據(jù)源配置并通過(guò)注解實(shí)現(xiàn)動(dòng)態(tài)切換數(shù)據(jù)源
- SpringBoot多數(shù)據(jù)源讀寫(xiě)分離的自定義配置問(wèn)題及解決方法
- 使用SpringBoot配置多數(shù)據(jù)源的經(jīng)驗(yàn)分享
- spring注解 @PropertySource配置數(shù)據(jù)源全流程
- springboot配置多個(gè)數(shù)據(jù)源兩種方式實(shí)現(xiàn)
- Spring配置數(shù)據(jù)源的三種方式(小結(jié))
- 解決springboot項(xiàng)目不配置數(shù)據(jù)源啟動(dòng)報(bào)錯(cuò)問(wèn)題
- springboot整合多數(shù)據(jù)源配置方式
相關(guān)文章
Java 照片對(duì)比功能的實(shí)現(xiàn)
這篇文章主要介紹了Java 照片比對(duì)功能實(shí)現(xiàn)類(lèi)的示例代碼,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下2020-12-12
Mybatis-plus如何在xml中傳入自定義的SQL語(yǔ)句
這篇文章主要介紹了Mybatis-plus如何在xml中傳入自定義的SQL語(yǔ)句問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05
java多線程CyclicBarrier的使用案例,讓線程起步走
這篇文章主要介紹了java多線程CyclicBarrier的使用案例,讓線程起步走!具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02
詳解JAVA中implement和extends的區(qū)別
這篇文章主要介紹了詳解JAVA中implement和extends的區(qū)別的相關(guān)資料,extends是繼承接口,implement是一個(gè)類(lèi)實(shí)現(xiàn)一個(gè)接口的關(guān)鍵字,需要的朋友可以參考下2017-08-08
Java 實(shí)戰(zhàn)范例之進(jìn)銷(xiāo)存管理系統(tǒng)的實(shí)現(xiàn)
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+vue+Springboot+ssm+mysql+maven+redis實(shí)現(xiàn)一個(gè)前后端分離的進(jìn)銷(xiāo)存管理系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-11-11
詳解mybatis多對(duì)一關(guān)聯(lián)查詢的方式
這篇文章主要給大家介紹了關(guān)于mybatis多對(duì)一關(guān)聯(lián)查詢的相關(guān)資料,文中將關(guān)聯(lián)方式以及配置方式介紹的很詳細(xì),需要的朋友可以參考下2021-06-06
Java微信公眾平臺(tái)開(kāi)發(fā)(15) 微信JSSDK的使用
這篇文章主要為大家詳細(xì)介紹了Java微信公眾平臺(tái)開(kāi)發(fā)第十五步,微信JSSDK的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
RabbitMQ實(shí)現(xiàn)消息可靠性傳遞過(guò)程講解
消息的可靠性傳遞是指保證消息百分百發(fā)送到消息隊(duì)列中去,這篇文章主要介紹了RabbitMQ實(shí)現(xiàn)消息可靠性傳遞過(guò)程,感興趣想要詳細(xì)了解可以參考下文2023-05-05
Spring JdbcTemplate執(zhí)行數(shù)據(jù)庫(kù)操作詳解
JdbcTemplate是Spring框架自帶的對(duì)JDBC操作的封裝,目的是提供統(tǒng)一的模板方法使對(duì)數(shù)據(jù)庫(kù)的操作更加方便、友好,效率也不錯(cuò),這篇文章主要介紹了Spring JdbcTemplate執(zhí)行數(shù)據(jù)庫(kù)操作,需要的朋友可以參考下2022-10-10
Java使用同步方法解決銀行取錢(qián)的安全問(wèn)題案例分析
這篇文章主要介紹了Java使用同步方法解決銀行取錢(qián)的安全問(wèn)題,結(jié)合具體案例形式分析了java同步方法實(shí)現(xiàn)多線程安全操作銀行取錢(qián)問(wèn)題,需要的朋友可以參考下2019-09-09

