interceptor拦截器实现aop
来源:互联网 发布:java线程同步几种方式 编辑:程序博客网 时间:2024/05/19 18:46
项目开发过程中,总会出现一些公共性的基础性服务。例如:日志、事务等等。即使在之前的OO的开发过程中,利用封装、继承、多态这些特性已经使开发趋于这样一个比较易扩展、易维护的开发流程。但是对于这些公共性的服务,开发者越来越发现这些代码总是在不断的重复。所以AOP应势而生,基于切面编程其实基于OO这样一个开发理念而形成的。好了,关于AOP的充电过程自行去了解。
直入正题,本文主要是通过interceptor结合ejb的client调用server来实现这样一个aop的效果。
项目驱动,简单介绍一下大体过程。
1.将相应的切面服务注册到jboss container中管理
2.在需要使用到服务的地方注入interceptor。
基本就是这样一个流程,比较简单。还是直接看代码。
package com.cfl.aop.interceptor;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
public class InterceptorCommonService {
@AroundInvoke
public Object interceptorMethod(InvocationContext ic) throws Exception {
System.out.println("InterceptorCommonService -----------excuting!excuting!excuting!excuting!-------------:" + ic.getMethod().getName());
return ic.proceed();
}
}
这是一个可被注入的拦截器类,在被需要注入公共服务类的上配置注解即可。
@Stateless
@Interceptors({InterceptorCommonService.class, InterceptorCommonService2.class})
//@Interceptors(InterceptorCommonService.class)
@Remote
public class LoginBeanimpl {
***;
@AroundInvoke
public String loggerImpl{
***;
}
@ExcludeClassInterceptors
public String veritfy(User user) {
***;
}
public void login(){
***;
}
}
LoginBeanimpl被注入InterceptorCommonService InterceptorCommonService2 两个拦截器,则在执行本身的方法之前都会先去执行两个拦截器中的方法。而@ExcludeClassInterceptors 用来阻止拦截器对某个Bean方法进行拦截。如:上述代码中被注入拦截器的LoginBeanimpl类中的veritfy方法在执行时不会被拦截。通过这个注解的英文意思也可以体会到。再次感受到英文的重要性啊。@AroundInvoke 主要是类中的拦截方法,就是在LoginBeanimpl的login方法在执行会执行loggerImpl先。
相比spring的aop实现,拦截器在灵活性上做的还不及spring的实现。但是针对切面编程的思路都是异曲同工的,还有就是interceptor并没有依赖一些框架,可以说在移植上是非常通用的。
1 0
- interceptor拦截器实现aop
- bboss aop 实践(5) 拦截器(Interceptor)
- JAVA反射实现一个拦截器(Interceptor)
- Angular2 Http拦截器 Interceptor 实现
- 基于AOP设计思想的拦截器(Interceptor)与传统拦截器(Filter)的区别
- Struts2拦截器(Interceptor)
- Struts2拦截器(Interceptor)
- EJB拦截器(Interceptor)
- 拦截器:Interceptor(原理)
- struts2 拦截器 interceptor
- struts2 拦截器 interceptor
- Struts2拦截器(Interceptor)
- Struts2拦截器(Interceptor)
- Struts2拦截器(Interceptor)
- Struts2拦截器(Interceptor)
- Interceptor拦截器
- Interceptor拦截器(二)
- 拦截器(Interceptor)
- python编写科学计算程序的书籍
- eclipse常用快捷键
- 数字通信系统模型
- 360笔试 给定a,b字符串 求出b相对于a的相对路径
- 《高效能程序员的修炼》之培养写作习惯
- interceptor拦截器实现aop
- Mac OS安装MySQL(使用二进制PGK包安装)
- 漫谈经典排序算法:六、各种排序算法总结
- POJ2264 HDU1503 Advanced Fruits【LCS】
- Objective-C - 动态方法、静态属性实例
- LINQ to SQL语句(1)之Where
- MySql分析整理命令
- 漫谈经典排序算法:五、线性时间排序(计数、基数、桶排序)
- STL中与二分查找相关的4个函数