到 Google 资讯主页   
EasyJF首页   资料   源码   软件    论坛   网站    
   使用帮助    
    该信息为本站MyRSS系统缓存内容,部分图片及附件有可能无法正常使用.easyjf.comexpert.blogjava.net无关,不对该信息负责.通过http://www.blogjava.net/Good-Game/archive/2007/10/15/153023.html访问该信息的原始内容.
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   
我的AOP学习(AspectJ)
作者:G_G 来源:expert.blogjava.net  发布时间:2007-10-15 19:33:47.753

学习拥有连贯
在我刚认识 让 java 动态 这种动态编译动态加载的几天后
对我一向不懂的 AOP 特别是 AspectJ 开窍了 (哈哈 那感觉好啊^_^)
下面我写出我刚对AOP的一些小练

1。目的
DAO中大量的 session的开和闭 不紧使代码成倍加,还及容易出错
用 设计模式
hibernate 包装 下大家好象有点接受不了(@_@!)
AOP就进入我的视线 但总没个切入点

2。原理
其实 让 java 动态 就是那点东西 但IBM 包出个好用的框架 来 。

3。代码说明

//*******************Dao.java ****************************
package
?tt;
//为了简单 session 看成是 真的session 哈 ^_^
public?class?Dao?{
????
public?String?session?=?"close"?;?
????
????
public?void?testDao(){
????????System.out.println(?
"testDao?in?function?:?"+?session);
????}
????
????
static?public?void?main(String[]args){
????????Dao?dao?
=?new?Dao()?;
????????dao.testDao();
????????System.out.println(
"main?in?function?:?"?+??dao.session);
????}
}

//*****************List.aj ****************************
package?tt;

public?aspect?List?{
??? //切点? 范围声明? (Dao.testDao 归 readOnly切点管? )
????pointcut?readOnly(Dao?dao):execution(
*?*Dao.testDao*(..))&&this(dao);

????//挂载
readOnly 开始方法
?????before(Dao?dao)?:??readOnly(dao)?{?????????
?????????????openSession(dao);
??????}
???? //挂载 readOnly 结束方法
?????after(Dao?dao)?returning()??:??readOnly(dao)?{
??????????close(dao);
?????}
????
????
// readOnly 方法 运行代码 (到这可以大胆的写 java 代码了 ) 。。。。
?????private?void?openSession(Dao?dao)?{
?????????
if(dao.session.equals("close"))
?????????????dao.session?
=?"Session?Open";
?????}
?????
private?void?close(Dao?dao)?{
?????????dao.session?
=?"close"?;
?????}
}

4。后续
AspectJ 使 AOP 简单
可能还会统一标准
能为我们的java 框架灵活 更上一层 (期待)




G_G 2007-10-15 16:57 发表评论

 
相关文章
 
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   


EasyJF.com 2006 隐私政策 使用EasyJF前必读