青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
隨筆:15 文章:206 評論:35 引用:0
fenglin
創(chuàng)新、創(chuàng)意、挑戰(zhàn)
C++博客
首頁
發(fā)新隨筆
發(fā)新文章
聯(lián)系
聚合
管理
Spring3_模擬Spring框架工作原理
用戶模型類User.java
package
com.bebig.model;
public
class
User
{
private
String username;
private
String password;
public
String getPassword()
{
return
password;
}
public
String getUsername()
{
return
username;
}
public
void
setPassword(String password)
{
this
.password
=
password;
}
public
void
setUsername(String username)
{
this
.username
=
username;
}
}
數(shù)據(jù)訪問接口UserDAO.java
package
com.bebig.dao;
import
com.bebig.model.User;
//
Data Access Object數(shù)據(jù)訪問接口
public
interface
UserDAO
{
public
void
save(User u);
}
數(shù)據(jù)訪問接口的實(shí)現(xiàn)UserDAOImpl.java
package
com.bebig.dao.impl;
import
com.bebig.dao.UserDAO;
import
com.bebig.model.User;
//
數(shù)據(jù)訪問接口的實(shí)現(xiàn)
public
class
UserDAOImpl
implements
UserDAO
{
@Override
public
void
save(User u)
{
System.out.println(
"
a user saved!
"
);
}
}
邏輯業(yè)務(wù)層UserService.java
package
com.bebig.service;
import
com.bebig.dao.UserDAO;
import
com.bebig.model.User;
//
邏輯業(yè)務(wù)層
public
class
UserService
{
private
UserDAO userDAO;
public
void
add(User u)
{
userDAO.save(u);
}
public
void
setUserDAO(UserDAO userDAO)
{
this
.userDAO
=
userDAO;
}
public
UserDAO getUserDAO()
{
return
userDAO;
}
}
Spring Bean工廠接口BeanFactory.java
package
com.bebig.spring;
public
interface
BeanFactory
{
public
Object getBean(String name);
}
Bean工廠實(shí)現(xiàn)方法ClassPathXmlApplicationContext.java
package
com.bebig.spring;
import
java.lang.reflect.Method;
import
java.util.HashMap;
import
java.util.List;
import
java.util.Map;
import
org.jdom.Document;
import
org.jdom.Element;
import
org.jdom.input.SAXBuilder;
//
用JDOM解析bean的配置文件
public
class
ClassPathXmlApplicationContext
implements
BeanFactory
{
private
Map
<
String,Object
>
beans
=
new
HashMap
<
String,Object
>
();
public
ClassPathXmlApplicationContext()
throws
Exception
{
SAXBuilder sb
=
new
SAXBuilder();
Document doc
=
sb.build(
this
.getClass().getClassLoader().getResourceAsStream(
"
beans.xml
"
)).getDocument();
Element root
=
doc.getRootElement();
List list
=
root.getChildren(
"
bean
"
);
for
(
int
i
=
0
;i
<
list.size();i
++
)
{
Element element
=
(Element) list.get(i);
String id
=
element.getAttributeValue(
"
id
"
);
String clazz
=
element.getAttributeValue(
"
class
"
);
System.out.println(id
+
"
:
"
+
clazz);
Object o
=
Class.forName(clazz).newInstance();
beans.put(id, o);
for
(Element propertyElement : (List
<
Element
>
) element.getChildren(
"
property
"
))
{
String name
=
propertyElement.getAttributeValue(
"
name
"
);
String bean
=
propertyElement.getAttributeValue(
"
bean
"
);
Object beanObject
=
beans.get(bean);
String methodName
=
"
set
"
+
name.substring(
0
,
1
).toUpperCase()
+
name.substring(
1
);
System.out.println(
"
method name =
"
+
methodName);
Method m
=
o.getClass().getMethod(methodName, beanObject.getClass().getInterfaces()[
0
]);
m.invoke(o, beanObject);
}
}
}
@Override
public
Object getBean(String name)
{
return
beans.get(name);
}
}
bean配置文件beans.xml
<
beans
>
<
bean
id
="u"
class
="com.bebig.dao.impl.UserDAOImpl"
/>
<
bean
id
="userService"
class
="com.bebig.service.UserService"
>
<
property
name
="userDAO"
bean
="u"
/>
</
bean
>
</
beans
>
測試用例:UserServiceTest.java
package
com.bebig.service;
import
org.junit.Test;
import
com.bebig.model.User;
import
com.bebig.spring.BeanFactory;
import
com.bebig.spring.ClassPathXmlApplicationContext;
public
class
UserServiceTest
{
@Test
public
void
testAdd()
throws
Exception
{
BeanFactory factory
=
new
ClassPathXmlApplicationContext();
UserService service
=
(UserService) factory.getBean(
"
userService
"
);
User u
=
new
User();
service.add(u);
}
}
模擬了Spring的Bean工廠,通過反射獲取相應(yīng)配置實(shí)體類,并執(zhí)行其方法。
發(fā)表于 2010-10-16 23:05
風(fēng)林
閱讀(464)
評論(0)
編輯
收藏
引用
所屬分類:
JAVA
、
Spring
只有注冊用戶
登錄
后才能發(fā)表評論。
相關(guān)文章:
[轉(zhuǎn)]java編程中'為了性能'一些盡量做到的地方
JAVAC命令行錯誤
Java基礎(chǔ)_Collection接口下的子類存儲特性
Android_常用控件使用
Android_Activity&Intent&Layout
Integer自動裝箱、拆箱問題
自定義比較器、排序
JDBC操作實(shí)例
常用數(shù)據(jù)庫的JDBC連接代碼
[轉(zhuǎn)]J2SE_內(nèi)部類
網(wǎng)站導(dǎo)航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
CALENDER
<
2025年11月
>
日
一
二
三
四
五
六
26
27
28
29
30
31
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
1
2
3
4
5
6
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
給我留言
查看公開留言
查看私人留言
隨筆分類
jBPM
(rss)
隨筆檔案
2011年7月 (1)
2011年4月 (1)
2011年2月 (1)
2010年11月 (1)
2010年10月 (2)
2010年9月 (3)
2010年8月 (4)
2010年7月 (2)
文章分類
AJAX(2)
(rss)
Android(2)
(rss)
C#(20)
(rss)
C++(6)
(rss)
ckeditor&ckfinder(1)
(rss)
CSS
(rss)
Delphi(2)
(rss)
Hibernate(39)
(rss)
JAVA(95)
(rss)
jQuery(1)
(rss)
JSP(9)
(rss)
Maven(1)
(rss)
MySQL(4)
(rss)
OOP(1)
(rss)
Python(42)
(rss)
Spring(31)
(rss)
SQL Server(4)
(rss)
Struts2(35)
(rss)
SVN(1)
(rss)
Tomcat(1)
(rss)
Ubuntu(1)
(rss)
軟件加解密技術(shù)
(rss)
雜文(1)
(rss)
文章檔案
2011年8月 (1)
2011年7月 (3)
2011年6月 (19)
2011年5月 (2)
2011年4月 (1)
2011年2月 (1)
2010年12月 (2)
2010年11月 (21)
2010年10月 (67)
2010年9月 (48)
2010年8月 (37)
2010年7月 (4)
新聞檔案
2010年7月 (1)
相冊
CSS
Hibernate
搜索
最新評論
1.?re: Struts2_三種傳參數(shù)方法
方式的發(fā)生
--阿飛史蒂夫
2.?re: 在Win7上搭建JSP開發(fā)環(huán)境
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--鄒
3.?re: ckeditor&ckfinder&s2sh集成
評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--庸幾何
4.?re: 在Win7上搭建JSP開發(fā)環(huán)境
下個 myeclipse@lou
--孫毅
5.?re: 在Win7上搭建JSP開發(fā)環(huán)境
@lou
運(yùn)行 -cmd 找到startup.bat 在java 環(huán)境中運(yùn)行
--孫毅
閱讀排行榜
1.?開始找Java開發(fā)類工作了(524)
2.?一流、二流、三流(464)
3.?給一家公司的軟件做加密方案(452)
4.?周一到周五都得出差,周末才能回(434)
5.?從WIN32開發(fā)轉(zhuǎn)型到WEB開發(fā)(394)
評論排行榜
1.?周一到周五都得出差,周末才能回(2)
2.?給力2011(2)
3.?最近工作有點(diǎn)忙(0)
4.?生活(0)
5.?在博客園開博了(0)
Powered By:
博客園
模板提供
:
滬江博客
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
欧美国产一区视频在线观看
|
国产精品视频精品视频
|
亚洲国产精品999
|
亚洲精品一区在线观看
|
欧美黑人在线播放
|
亚洲香蕉在线观看
|
久久久久国内
|
亚洲激情国产
|
国产精品国产福利国产秒拍
|
午夜国产不卡在线观看视频
|
美女在线一区二区
|
亚洲免费精彩视频
|
国产日韩av一区二区
|
久久精品国产亚洲aⅴ
|
亚洲国产天堂久久综合网
|
亚洲视频在线一区观看
|
国产视频在线观看一区
|
麻豆精品一区二区av白丝在线
|
亚洲国产精品美女
|
亚洲欧美激情一区
|
尤物网精品视频
|
国产精品黄视频
|
六月婷婷久久
|
亚洲一区二区三区涩
|
美乳少妇欧美精品
|
亚洲一区视频在线
|
在线观看欧美精品
|
国产精品第十页
|
蜜臀久久99精品久久久久久9
|
亚洲永久精品大片
|
欧美a级片网
|
欧美一区二区三区免费在线看
|
影音先锋中文字幕一区二区
|
欧美天堂亚洲电影院在线播放
|
欧美伊人久久大香线蕉综合69
|
亚洲韩国精品一区
|
久久视频精品在线
|
亚洲欧美在线aaa
|
亚洲精品国产精品乱码不99
|
欧美精品免费在线观看
|
性欧美办公室18xxxxhd
|
99riav国产精品
|
欧美mv日韩mv国产网站
|
午夜亚洲视频
|
亚洲一区二区欧美
|
亚洲精华国产欧美
|
好吊视频一区二区三区四区
|
欧美视频中文一区二区三区在线观看
|
久久久国产精品一区二区中文
|
99精品热6080yy久久
|
欧美~级网站不卡
|
久久午夜精品一区二区
|
欧美一区二区三区四区在线观看地址
|
久久五月婷婷丁香社区
|
小黄鸭精品aⅴ导航网站入口
|
99精品欧美一区二区蜜桃免费
|
狠狠入ady亚洲精品经典电影
|
国产精品亚洲视频
|
国产精品啊啊啊
|
欧美视频中文字幕在线
|
欧美精品一区二
|
欧美激情小视频
|
欧美高清在线精品一区
|
久久综合中文色婷婷
|
久久久999国产
|
久久久久久久久久久久久女国产乱
|
午夜精品久久
|
亚洲一区亚洲
|
亚洲欧美日韩国产一区
|
亚洲欧美精品在线观看
|
亚洲欧美日韩电影
|
午夜一级久久
|
欧美在线一区二区三区
|
久久精品欧洲
|
老牛影视一区二区三区
|
免播放器亚洲
|
欧美激情第4页
|
欧美日韩精品免费在线观看视频
|
欧美 日韩 国产 一区
|
欧美成人午夜激情
|
欧美国产在线电影
|
欧美日韩理论
|
国产精品老女人精品视频
|
国产精品亚洲аv天堂网
|
国产视频综合在线
|
136国产福利精品导航网址
|
亚洲第一级黄色片
|
日韩视频欧美视频
|
亚洲一区二区精品视频
|
欧美一区二区三区在
|
久久亚洲精品网站
|
欧美国产日本在线
|
亚洲美女视频网
|
亚洲欧美日本另类
|
久久先锋资源
|
欧美日韩精品免费看
|
国产精品实拍
|
在线观看视频一区二区欧美日韩
|
亚洲欧洲一区二区三区
|
亚洲性图久久
|
久久野战av
|
亚洲精品免费电影
|
午夜精品国产精品大乳美女
|
久久天天狠狠
|
欧美区一区二区三区
|
国产日韩欧美麻豆
|
最新中文字幕亚洲
|
欧美一级一区
|
欧美激情网站在线观看
|
在线亚洲欧美
|
蜜臀av在线播放一区二区三区
|
欧美日韩亚洲国产一区
|
国产综合色产
|
亚洲无限av看
|
欧美国产日韩在线观看
|
亚洲一区二区动漫
|
欧美插天视频在线播放
|
国产精品色婷婷
|
亚洲国产精品一区二区三区
|
亚洲欧美变态国产另类
|
模特精品在线
|
亚洲综合色网站
|
欧美日韩国产成人
|
永久免费精品影视网站
|
亚洲欧美日韩人成在线播放
|
免费欧美在线视频
|
亚洲欧美一级二级三级
|
欧美日韩精品欧美日韩精品
|
国语精品一区
|
亚洲欧美在线aaa
|
亚洲人久久久
|
老司机午夜精品视频在线观看
|
国产精品日韩久久久久
|
99re热精品
|
欧美国产第一页
|
久久精品论坛
|
国产婷婷成人久久av免费高清
|
一区二区三区久久精品
|
欧美成人黄色小视频
|
欧美在线关看
|
国产日本欧美一区二区三区
|
亚洲图片欧美午夜
|
亚洲人成精品久久久久
|
免费成人av
|
亚洲国产第一
|
欧美bbbxxxxx
|
久久久精品999
|
狠狠色丁香久久婷婷综合丁香
|
午夜精品久久久久久99热软件
|
亚洲人成网站在线观看播放
|
麻豆国产va免费精品高清在线
|
国产一区二区在线免费观看
|
在线高清一区
|
久久尤物电影视频在线观看
|
午夜一级久久
|
国产亚洲欧美一区在线观看
|
欧美呦呦网站
|
亚洲欧美在线观看
|
国产欧美在线
|
久久久天天操
|
久久久人成影片一区二区三区观看
|
国产亚洲一区二区三区
|
欧美在线在线
|
久久精品动漫
|
在线播放亚洲
|
亚洲国产精品女人久久久
|
免费观看久久久4p
|
亚洲精品欧美在线
|
日韩亚洲欧美一区
|
欧美性大战xxxxx久久久
|
亚洲主播在线观看
|
亚洲男女自偷自拍
|
国产一区二区三区视频在线观看
|
裸体歌舞表演一区二区
|
亚洲毛片一区
|
亚洲免费电影在线观看
|
欧美视频精品在线观看
|
午夜精彩视频在线观看不卡
|
亚洲欧美日韩第一区
|
国产亚洲va综合人人澡精品
|
久久久久在线观看
|
另类av一区二区
|
99伊人成综合
|
亚洲欧美日韩在线一区
|
国产综合在线视频
|
欧美国产丝袜视频
|
欧美日韩在线一二三
|
久久国产毛片
|
免费观看30秒视频久久
|
宅男在线国产精品
|
欧美一区二区视频在线
|
亚洲国产一区二区三区青草影视
|
亚洲国产精品久久精品怡红院
|
欧美日韩中文字幕在线
|
欧美一区二区三区四区夜夜大片
|
久久久久网站
|
一区二区三区欧美日韩
|
欧美自拍偷拍
|
在线一区欧美
|
久久久久国产一区二区三区四区
|