interceptor拦截器实现aop

项目开发过程中,总会出现一些公共性的基础性服务。例如:日志、事务等等。即使在之前的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并没有依赖一些框架,可以说在移植上是非常通用的。

时间: 2024-10-07 06:41:01

interceptor拦截器实现aop的相关文章

springMVC3学习(七)--Interceptor拦截器

Spring为我们提供了:org.springframework.web.servlet.HandlerInterceptor接口, org.springframework.web.servlet.handler.HandlerInterceptorAdapter适配器, 实现这个接口或继承此类,能够很方便的实现自己的拦截器. 有下面三个方法: Action之前运行 public boolean preHandle(HttpServletRequest request, HttpServletR

SpringMVC中使用Interceptor拦截器

SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间. 一.定义Interceptor实现类 SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的.在SpringMVC 中定义一个Interceptor 非常简单,主要有两种方式,第一种方式是要定义的Intercep

SpringMVC 中的Interceptor 拦截器

1.配置拦截器 在springMVC.xml配置文件增加: <mvc:interceptors>  <!-- 日志拦截器 -->  <mvc:interceptor>   <mvc:mapping path="/**" />   <mvc:exclude-mapping path="/static/**" />   <bean class="拦截器java代码路径" />  

Spring MVC中使用Interceptor拦截器

SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间. 一.定义Interceptor实现类 SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的.在SpringMVC 中定义一个Interceptor 非常简单,主要有两种方式,第一种方式是要定义的Intercep

SpringMVC中使用Interceptor拦截器详解

SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间. 一.定义Interceptor实现类 SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的.在SpringMVC 中定义一个Interceptor 非常简单,主要有两种方式,第一种方式是要定义的Intercep

Interceptor拦截器

1. Interceptor介绍Struts2中的interceptor它是基于spring aop思想,而aop思想它本质上是通过动态代理来实现.我们strtus2的拦截器它主要是拦截Action的操作,在action的执行前或执行后进行一些其它的功能操作.拦截器链(拦截器栈)简单说,就是可以将多个拦截器形成一个链,在访问它们时依次访问.以下是struts2的执行流程图执行的过程:当我们发送请求访问Action时,会被StrutsPrepareAndExecuteFilter拦截在其doFil

interceptor 拦截器

<?xml version="1.0" encoding= "UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <const

Mybatis Interceptor 拦截器原理 源码分析

Mybatis采用责任链模式,通过动态代理组织多个拦截器(插件),通过这些拦截器可以改变Mybatis的默认行为(诸如SQL重写之类的),由于插件会深入到Mybatis的核心,因此在编写自己的插件前最好了解下它的原理,以便写出安全高效的插件. 代理链的生成 Mybatis支持对Executor.StatementHandler.PameterHandler和ResultSetHandler进行拦截,也就是说会对这4种对象进行代理. 通过查看Configuration类的源代码我们可以看到,每次都

登录检查 springMVC Interceptor拦截器实现登访问

web开发中经常会遇到浏览网页时,需要用户登陆之后才能访问一些重要的页面,当你访问一些"非法"页面时,也就是如果检查你还没有登录进该系统,则需要先登录,只要你成功登录就可以访问信管内容,实现该功能需要 继承拦截器HandlerInterceptorAdapter,这个类中有三个重要的方法,灰色老哥方法可以先不关注,主要代码实现是绿色那一部分,代码如下: /** * @author  tony * @date  2014-12-17 */ /** * 登录拦截器,只有登录之后才能访问 *