翠湖月色
No Buddha tree at all,And bright mirror nor.Now nothing at all,How dusts any more ?
首页
新随笔
联系
聚合
管理
随笔 - 245 文章 - 384 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
本博客系个人收集材料及学习记录之用,各类“大侠”勿扰!
留言簿
(7)
给我留言
查看公开留言
查看私人留言
随笔分类
JavaEE(34)
Linux与Unix(6)
Web Services and SOA(16)
人文历史(17)
名词解释(2)
品读英语(18)
基础编程篇(9)
所感所悟(25)
报表设计与开发(12)
数据库(Sql server,My sql)(1)
数据结构与算法设计(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
放水老倌
搜索
积分与排名
积分 - 73063
排名 - 132
最新评论
1. re: 数据结构之线性表- 一元稀疏多项式计算器
好感动 呜呜TT
终于让我找到了
我会好好看滴
谢谢
--烦死数据结构
2. re: SQL server存储过程
唐,你的论文就是事务嘛!
--倌
3. re: ActiveBpel引擎专题-ActiveBPEL2.x用户手册[未登录]
你好,我配置ActiveBPEL的持久化总是不成功,是什么原因呢?
--hh
4. re: Struts+Spring+Hibernate in action之:简单例子开发
麻烦你,我也要一份,谢谢。sdjnqiying@163.com
--qy
5. re: Struts+Spring+Hibernate in action之:简单例子开发
yangmeng88714@126.com太感谢了
--杨萌
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
阅读(217)
评论(0)
编辑
收藏
所属分类:
JavaEE
IT新闻
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关文章:
FckEditor编辑器添加对话框的内容
动态载入jsp页面到指定页面的区域
在线编辑器FCKeditor2.6中文乱码-解决过程
Struts的标签使用(1)
中文汉字GB2312和UTF-8的编码转换程序(转)
转载:js技巧收集(200多个) 3
转载:js技巧收集(200多个) 2
转载:js技巧收集(200多个) 1
MySQL的数据类型和建库策略-转贴
Hibernate和Jive缓存策略的比较-转贴
相关链接:
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理