<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
常見的資料來源(連線池):DBCP、C3P0、BoneCP、Druid等
在JavaSE中的JDBC就是通過資料來源獲取資料庫中的資料
匯入資料來源的座標和資料庫的座標
<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>
建立資料來源物件
設計資料來源的基本連線資料
使用資料來源獲取連線資源和歸還連線資源
@Test public void test01() throws PropertyVetoException, SQLException { //建立資料來源 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(); }
@Test public void test02() throws SQLException { //建立資料來源 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(); }
上述手動建立資料來源的過程中顯而易見出現一個問題,那就是程式碼的維護性較差,倘若需要修改資料庫的資料,當java程式進行編寫就變成了位元組碼檔案,修改位元組碼檔案是比較困難的,不利於系統的維護
通過使用properties組態檔來建立連線池就可以較好地解決此類問題
在resources資料夾下建立相對應的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"); //建立資料來源 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(); }
在spring框架中,spring框架的容器可以完成DataSource的建立
<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(); }
在實際開發過程中,並不習慣在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設定資料來源內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45