翠湖月色
No Buddha tree at all,And bright mirror nor.Now nothing at all,How dusts any more ?
首頁
新隨筆
聯系
聚合
管理
隨筆 - 251 文章 - 504 trackbacks - 0
<
2006年12月
>
日
一
二
三
四
五
六
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
本博客系個人收集材料及學習記錄之用,各類“大俠”勿擾!
留言簿
(14)
給我留言
查看公開留言
查看私人留言
隨筆分類
JavaEE(36)
Linux與Unix(6)
Web Services and SOA(16)
WordPress或PHP(1)
人文歷史(17)
名詞解釋(2)
品讀英語(18)
基礎編程篇(9)
所感所悟(25)
報表設計與開發(12)
數據庫(Sql server,My sql)(3)
數據結構與算法設計(9)
有關網絡(5)
雜錄(29)
經典視聽(12)
網站應用(6)
腳本語言及頁面設計(8)
軟件測試技術(8)
閱讀筆記(9)
收藏夾
開源項目(2)
編程開發(3)
網絡應用(2)
My Favorite Web Sites
CSDN Java 頻道
IBM developerWorks中國
Java開源大全
J道:Java解決之道
SpringFramwork中文論壇
中國萬維網聯盟論壇
中文Java學習網站-孫衛琴版主
中文Java技術主力站點-JR論壇
綠色軟件下載-霏凡軟件站
蝙蝠英語學習網
名Bloger
Martin Fowler's blog
No1
算法研究、C/C++
月光博客
非著名Bloger
willing的Blog
德賢Blog
放水老倌
搜索
積分與排名
積分 - 202396
排名 - 285
最新評論
1.?re: Jasperreport連續打印多個報表模板-原創
您好博主,多個jasper報表文件合并輸出pdf文件了,請問頁碼和總頁數怎么設置?謝謝!
--飛燕
2.?re: FckEditor上傳音頻視頻[未登錄]
樓主可以將此代碼共享出來呀 既然這么多人要!
--hello
3.?re: FckEditor上傳音頻視頻
能不能發一份fck支持上傳,播放視頻的給我,我急用!
--張德強
4.?re: Struts2 select標簽值從數據庫讀取,再提交給action
公司打個
--飛灑地方
5.?re: Jasperreport連續打印多個報表模板-原創
多謝,解決了我的問題
--黃曉潔
Spring IoC容器-編碼方式比較
下面會通過一個獲得數據源的例子來比較下傳統編碼模式和IoC編碼模式的不同。首先,在傳統編碼方式下,我們可能這樣獲得數據源并顯示結果:
package
?com.lnic.ioc;
import
?javax.sql.DataSource;
import
?java.sql.Connection;
import
?java.sql.Statement;
import
?java.sql.ResultSet;
import
?java.sql.SQLException;
import
?org.apache.commons.dbcp.BasicDataSource;
public
?
class
?BasicDataSourceExample?
{
????
public
?
static
?
void
?main(String[]?args)?
{
????????DataSource?dataSource?
=
?setupDataSource();
????????
//
?創建JDBC數據源
????????Connection?conn?
=
?
null
;
????????Statement?stmt?
=
?
null
;
????????ResultSet?rset?
=
?
null
;
????????
try
?
{
????????????
????????????conn?
=
?dataSource.getConnection();
????????????stmt?
=
?conn.createStatement();
????????????rset?
=
?stmt.executeQuery(
"
select?*?from?user
"
);
????????????System.out.println(
"
Basic?DataSource?executing?results:
"
);
????????????
int
?numcols?
=
?rset.getMetaData().getColumnCount();
????????????
while
?(rset.next())?
{
????????????????
for
?(
int
?i?
=
?
1
;?i?
<=
?numcols;?i
++
)?
{
????????????????????System.out.print(
"
\t
"
?
+
?rset.getString(i));
????????????????}
????????????????System.out.println(
""
);
????????????}
????????}
?
catch
?(SQLException?e)?
{
????????????e.printStackTrace();
????????}
?
finally
?
{
????????????
try
?
{
????????????????rset.close();
????????????}
?
catch
?(Exception?e)?
{
????????????}
????????????
try
?
{
????????????????stmt.close();
????????????}
?
catch
?(Exception?e)?
{
????????????}
????????????
try
?
{
????????????????conn.close();
????????????}
?
catch
?(Exception?e)?
{
????????????}
????????}
????}
????
//
?創建數據源
????
public
?
static
?DataSource?setupDataSource()?
{
????????BasicDataSource?ds?
=
?
new
?BasicDataSource();
????????ds.setDriverClassName(
"
com.mysql.jdbc.Driver
"
);
????????ds.setUsername(
"
root
"
);
????????ds.setPassword(
"
131421
"
);
????????ds.setUrl(
"
jdbc:mysql://localhost:3306/test
"
);
????????
return
?ds;
????}
????
//
?提示數據源狀態
????
public
?
static
?
void
?printDataSourceStats(DataSource?ds)?
throws
?SQLException?
{
????????BasicDataSource?bds?
=
?(BasicDataSource)?ds;
????????System.out.println(
"
NumActive:?
"
?
+
?bds.getNumActive());
????????System.out.println(
"
NumIdle:?
"
?
+
?bds.getNumIdle());
????}
????
//
?關閉數據源
????
public
?
static
?
void
?shutdownDataSource(DataSource?ds)?
throws
?SQLException?
{
????????BasicDataSource?bds?
=
?(BasicDataSource)?ds;
????????bds.close();
????}
}
這個累的測試結果顯示:
Basic DataSource executing results:
?123?matthew?YunNanUniversity
?1?lidexian?YunNanUniversity
?2?zhangzili?HunanUniversity
而在Spring 的IoC容器的幫助下我們的編碼會更簡單和靈活。首先,定義個Spring的配置文件:applicationContext.xml。在這個配置文件中,我們配置了三個bean組件,代表不同的數據庫數據源。然后,通過配置jdbcTemplate來啟用需要的具體數據庫數據源。如下:我們采用的MySql數據源。
<?
xml?version="1.0"?encoding="UTF-8"
?>
<!
DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd"
>
<
beans
>
????
<
bean?
id
="oracle_dataSource"
?class
="org.apache.commons.dbcp.BasicDataSource"
?destroy-method
="close"
>
????????
<
property?
name
="driverClassName"
?value
="oracle.jdbc.driver.OracleDriver"
?
/>
????????
<
property?
name
="url"
?value
="jdbc:oracle:thin:@localhost:1521:cyberdb"
?
/>
????????
<
property?
name
="username"
?value
="scott"
?
/>
????????
<
property?
name
="password"
?value
="tiger"
?
/>
????
</
bean
>
????
????
????
????
<
bean?
id
="mysql_dataSource"
?class
="org.apache.commons.dbcp.BasicDataSource"
?destroy-method
="close"
>
????????
<
property?
name
="driverClassName"
?value
="com.mysql.jdbc.Driver"
?
/>
????????
<
property?
name
="url"
?value
="jdbc:mysql://localhost:3306/test"
?
/>
????????
<
property?
name
="username"
?value
="root"
?
/>
????????
<
property?
name
="password"
?value
="131421"
?
/>
????
</
bean
>
????
????
<
bean?
id
="linux_oracle_dataSource"
?class
="org.apache.commons.dbcp.BasicDataSource"
?destroy-method
="close"
>
????????
<
property?
name
="driverClassName"
?value
="oracle.jdbc.driver.OracleDriver"
?
/>
????????
<
property?
name
="url"
?value
="jdbc:oracle:thin:@192.168.0.3:1521:linuxdb"
?
/>
????????
<
property?
name
="username"
?value
="scott"
?
/>
????????
<
property?
name
="password"
?value
="tiger"
?
/>
????
</
bean
>
????
<
bean?
id
="jdbcTemplate"
?class
="org.springframework.jdbc.core.JdbcTemplate"
?lazy-init
="true"
>
????????
<
property?
name
="dataSource"
>
????????????
<
ref?
local
="mysql_dataSource"
?
/>
????????
</
property
>
????
</
bean
>
????
</
beans
>
然后,如下在代碼中通過載入Spring的配置文件,并初始化bean組件:jdbcTemplate得到數據源,并完成數據查詢。可以看出比傳統的方法簡單和靈活多了,只需要簡單配置即可完成。
package
?com.lnic.ioc;
import
?java.sql.ResultSet;
import
?java.sql.SQLException;
import
?java.util.ArrayList;
import
?java.util.List;
import
?org.springframework.context.ApplicationContext;
import
?org.springframework.context.support.ClassPathXmlApplicationContext;
import
?org.springframework.jdbc.core.JdbcTemplate;
import
?org.springframework.jdbc.core.RowCallbackHandler;
public
?
class
?IocDataSourceExample?
{
????
public
?
static
?
void
?main(String[]?args)?
{
????????ApplicationContext?ctx?
=
?
new
?ClassPathXmlApplicationContext(
????????????????
"
com/lnic/ioc/applicationContext.xml
"
);
//
載入spring配置文件applicationContext.xml
????????String?sql?
=
?
"
select?*?from?user
"
;
????????JdbcTemplate?jt?
=
?(JdbcTemplate)?ctx.getBean(
"
jdbcTemplate
"
);
//
這里采用spring的JdbcTemplate,通過spring的配置文件啟用mysql_dataSource數據源。
????????jt.query(sql,?
new
?RowCallbackHandler()?
{
????????????
public
?
void
?processRow(ResultSet?rs)?
throws
?SQLException?
{
????????????????
//
?do?something?with?the?rowdata?-?like?create?a?new
????????????????
//
?object?and?add?it?to?the?List?in?the?enclosing?code
????????????????System.out.println(
"
IocDataSource?executing?results:
"
);
????????????????
int
?numcols?
=
?rs.getMetaData().getColumnCount();
????????????????
????????????????
do
?
{
????????????????????
for
?(
int
?i?
=
?
1
;?i?
<=
?numcols;?i
++
)?
{
????????????????????????System.out.print(
"
\t
"
?
+
?rs.getString(i));
????????????????????}
????????????????????System.out.println(
""
);
????????????????}
?
while
?(rs.next());
????????????}
????????}
);
????}
}
代碼輸出如下:
IocDataSource executing results:
?123?matthew?YunNanUniversity
?1?lidexian?YunNanUniversity
?2?zhangzili?HunanUniversity
posted on 2006-12-26 13:25
matthew
閱讀(457)
評論(0)
編輯
收藏
所屬分類:
JavaEE
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
Struts2 select標簽值從數據庫讀取,再提交給action
jbpm3插件的中文亂碼問題
FckEditor編輯器添加對話框的內容
動態載入jsp頁面到指定頁面的區域
在線編輯器FCKeditor2.6中文亂碼-解決過程
Struts的標簽使用(1)
中文漢字GB2312和UTF-8的編碼轉換程序(轉)
轉載:js技巧收集(200多個) 3
轉載:js技巧收集(200多個) 2
轉載:js技巧收集(200多個) 1
Copyright ©2025 matthew Powered by:
博客園
模板提供:
滬江博客
主站蜘蛛池模板:
成人一级免费视频
|
国产精品亚洲专区无码不卡
|
99久久成人国产精品免费
|
啊灬啊灬别停啊灬用力啊免费看
|
亚洲AV无码专区国产乱码不卡
|
欧洲精品免费一区二区三区
|
亚洲免费网站观看视频
|
免费无码看av的网站
|
无人视频免费观看免费视频
|
亚洲另类激情专区小说图片
|
久久精品成人免费观看97
|
久久精品国产精品亚洲精品
|
国产成人精品免费视频网页大全
|
亚洲国产成人手机在线电影bd
|
国产精品成人免费视频网站京东
|
亚洲欧美日韩综合久久久久
|
无码欧精品亚洲日韩一区夜夜嗨
|
青青视频免费在线
|
免费jlzzjlzz在线播放视频
|
国产精品无码免费专区午夜
|
嫩草在线视频www免费观看
|
啦啦啦中文在线观看电视剧免费版
|
久久青青草原亚洲av无码
|
a级片免费在线观看
|
久久精品国产亚洲AV无码麻豆
|
国产区在线免费观看
|
亚洲成AV人片在WWW色猫咪
|
四虎1515hh永久久免费
|
国产亚洲一卡2卡3卡4卡新区
|
亚洲精品线路一在线观看
|
嫩草在线视频www免费观看
|
亚洲AV无码久久久久网站蜜桃
|
国产成人亚洲精品青草天美
|
久草免费在线观看视频
|
狼人大香伊蕉国产WWW亚洲
|
国产V亚洲V天堂无码久久久
|
国产精品1024永久免费视频
|
美女黄色毛片免费看
|
日本久久久久亚洲中字幕
|
国产一精品一aⅴ一免费
|
女人体1963午夜免费视频
|