<b>Spring事件处理及其AOP框架的本相</b>[Java编程]
本文“<b>Spring事件处理及其AOP框架的本相</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Spring框架中成功吸惹人的一点就是容器事件的管理,供应了一个轻量级的容器事件处理,针对的对象是普通的java类,利用Spring事件管理的话,你可以按照自己的业务把一些相关的办法归入其事件管理里面,这就避免了程序员在处理事件的历程中烦琐的工作.同时这些也是ejb2.X标准里面吸惹人的一点,这在spring里面都很好的供应.固然在跨容器的事件管理,spring里面并没有供应,但是关于普通的web程序来说,也不需求仅仅为了那些功效而不得不利用ejb.不过,近来jboss的嵌入式的ejb容器也可以做的更小了,也是开源中的挑选之一.无论技术是怎样发展的,当前,我们先来研究此中AOP实现的办法.
事实上,Spring中的事件处理是通过AOP思惟来实现的,Spring AOP与Aspect J和JBoss具有很大的差别,首先,利用Spring AOP框架的用户要记着的一点是,Spring AOP针对的是办法层次上的实现,而其他二者对字段也供应了支持.说到Spring AOP的底细,其实也不难,关于有接口的类,利用的是Java内部类供应的Proxy;而关于那些不实现接口的类,利用的是cglib库,动态成立一个子类来实现.
在Spring AOP中供应了4种处理切入范例:around,before,after,introduction.
1)around是针对具体的某个切入点的办法(比方,目前有个OrderBook办法,around的切入范例是就这个办法的内部调用,是通过java的元数据,在运行时通过Method.invoke来调用,具有返回值,当发生不测的时刻会终止.记着的一点是,返回值.);
2)before是在办法调用前调用(在OrderBook办法前调用,但是没有返回值,同时在普通不测情形下,会持续运行下一步办法.记着的一点是没有返回值);
3)after和before刚好相反,没有什么分外的地方.
4)introduction是一个越发特别的,但功效愈加强盛的切入范例.比方(你目前有Book对象,Computer对象,还有几十个这种业务对象,目前你但愿在每个这样的对象中都加入一个记录最后改正的时间.但是你又不但愿对每个类都举行改正,因为太麻烦了,同时更重要的一点,破坏了对象的完好性,说不定你今后又不需求这个时间数据了呢...这时怎么办呢?Spring AOP就为你专门实现这种思惟供应了一个切入处理,那就是introduction.introduction可认为你动态加入某些办法,这样可以在运行时,强迫转换这些对象,举行插入时间数据的行动,更深的底细就是C++虚函数中的vtable思惟).不过这种动态是以性能作为代价的,利用之前要慎重考虑,这里我们谈的是技术,所以就认为他是必须的.
好,目前我们就拿第四种来举行举例阐明Spring AOP的强盛之处:
1)假定成立了一个BookService接口及其实现办法(你自己的业务对象):
//?$ID:BookService.java Created:2005-11-6 by Kerluse Benn
package com.osiris.springaop;
public interface BookService {
public String OrderComputerMagazine(String userName,String bookName);
public String OrderBook(String userName,String bookName);
}
//?$ID:BookServiceImpl.java Created:2005-11-6 by Kerluse Benn
package com.osiris.springaop;
public class BookServiceImpl implements BookService{
public String OrderBook(String name,String bookName) {
// TODO Add your codes here
String result=null;
result="订购"+bookName+"成功";
return result;
}
public String OrderComputerMagazine(String userName, String bookName) {
// TODO Add your codes here
String result=null;
result="订购"+bookName+"成功";
return result;
}
}
以上是“<b>Spring事件处理及其AOP框架的本相</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |