首页 | 互联网 | IT动态 | Cisco | Windows | Linux | Java | .Net | Oracle | 华为 | 存储世界 | 服务器 | 网络设备 | IDC | 安全 | 求职招聘
IT培训 | 数字网校 | 技术专题 | 电子书下载 | 教学视频 | 网页设计 | 平面设计 | 解决方案 | 直播室 | 虚拟考场 | 搜索 | 博客 | 沙龙 | 论坛
中国IT实验室Linux频道
中国IT教育
 
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> 开源技术 >> Spring >> 文章正文

Java编程—Spring AOP本质(6)

文章来源本站原创 作者佚名 更新时间2008-5-15 保存本文保存本文 推荐给好友推荐给好友 收藏本页收藏本页
    在前面四个例子中,只要实现一个Advice,然后调用ProxyFactory.addAdvice()方法为代理设定通知,不用设置切入点,从代理对上调用的方法就被通知到了。其原因就在于执行addAdvice()方法时,ProxyFactory会将Advice对象委派给addAdvistor()方法,后台会自动创建一个DefaultPointcutAdvistor实例,并将Advice加入其中。而默认的DefaultPointcutAdvistor会将切入点设为所有的方法。
 
假如我们不想通过代理来执行某些方法,也就是说,在执行某些方法的时候不通知,这时候该如何实现呢?
Spring提供一系列接口来实现这个目标。最主要的接口如下:
implements org.springframework.aop.Pointcut
org.springframework.aop.ClassFilter
org.springframework.aop.MethodMatcher
 
下面看看几个关键接口的定义:
 
1、切入点(Pointcut)
 
/**
* 切入点
*/
public interface Pointcut {
    //切入点的一个单例
    public static final Pointcut TRUE = TruePointcut.INSTANCE;  
    //类过滤器  
    public ClassFilter getClassFilter();
    //方法过滤器
    public MethodMatcher getMethodMatcher();
}
 
/**
* 类过滤器
*/
public interface ClassFilter {
    //类过滤器单例
    public static final ClassFilter TRUE = TrueClassFilter.INSTANCE;
    //类匹配方法
    public boolean matches(Class class1);
}
 
/**
* 方法过滤器
*/
public interface MethodMatcher {
    //方法过滤器单例
    public static final MethodMatcher TRUE = TrueMethodMatcher.INSTANCE;
    //静态方法匹配方法
    public boolean matches(Method method, Class class1);
    //判断静态还是动态匹配,返回true动态匹配,false静态匹配
    public boolean isRuntime();
    //对象(动态)匹配方法
    public boolean matches(Method method, Class class1, Object aobj[]);
}
 
2、通知者(Advisor)
 
/**
* 通知者接口
*/
public interface Advisor {
    //切面是否为per instance
    public boolean isPerInstance();
    //获取切面上的通知
    public Advice getAdvice();
}
 
/**
* 通知者子接口,Spring中标准的切面都应该实现此接口
*/
public PointcutAdvisor extends Advisor {
    //获取通知者的切点
    public Pointcut getPointcut();
}
 
为了看的明白,还是回顾一下框架图:
 
 

[1] [2] [3] 下一页  

【责编:Ken】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 社区讨论
 博客论点