您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“Spring怎么配置數(shù)據(jù)源”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Spring怎么配置數(shù)據(jù)源”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。
數(shù)據(jù)源(連接池)是提高程序性能出現(xiàn)的
事先實(shí)例化數(shù)據(jù)源,初始化部分連接資源
使用連接資源時(shí)從數(shù)據(jù)源中獲取
使用完畢后將連接資源歸還給數(shù)據(jù)源
常見的數(shù)據(jù)源(連接池):DBCP、C3P0、BoneCP、Druid等
在JavaSE中的JDBC就是通過數(shù)據(jù)源獲取數(shù)據(jù)庫(kù)中的數(shù)據(jù)
導(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ù)源獲取連接資源和歸還連接資源
@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(); }
@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(); }
上述手動(dòng)創(chuàng)建數(shù)據(jù)源的過程中顯而易見出現(xiàn)一個(gè)問題,那就是代碼的維護(hù)性較差,倘若需要修改數(shù)據(jù)庫(kù)的數(shù)據(jù),當(dāng)java程序進(jìn)行編寫就變成了字節(jié)碼文件,修改字節(jié)碼文件是比較困難的,不利于系統(tǒng)的維護(hù)
通過使用properties配置文件來創(chuàng)建連接池就可以較好地解決此類問題
在resources文件夾下創(chuàng)建相對(duì)應(yīng)的properties配置文件,在里面編寫數(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 { //加載類路徑下的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(); }
在spring框架中,spring框架的容器可以完成DataSource的創(chuàng)建
DataSource有無參數(shù)構(gòu)造方法,而spring默認(rèn)是通過無參構(gòu)造方法實(shí)例化對(duì)象
DataSource要想使用通過set方法來設(shè)置數(shù)據(jù)庫(kù)連接信息,spring是可以通過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(); }
在實(shí)際開發(fā)過程中,并不習(xí)慣在spring配置文件中把數(shù)據(jù)庫(kù)的相關(guān)參數(shù)寫死,而是將它寫在properties配置文件中,spring配置文件通過抽取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á)是那些編寫,即可獲取相對(duì)應(yīng)的數(shù)據(jù)**
讀到這里,這篇“Spring怎么配置數(shù)據(jù)源”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。