`

Spring MethodInterceptor拦截器配置(AOP Around Advice)

 
阅读更多

 

一、Spring MethodInterceptor拦截器配置

 

import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import com.oncloudit.shared.util.StringUtil;

public class SQLConvertorInterceptor implements MethodInterceptor {
	
	public String spliceUpdateSQL(String sql) {
		if (!StringUtil.isNotEmpty(sql)) return null;
		
		//1.检查该sql操作的表是否是需要同步的表
		
		//2.检查该sql是否是update操作
		if (sql.contains("UPDATE")) {
			int index = sql.indexOf("SET");
			String a = sql.substring(0, index);
			String c = sql.substring(index + 4);
			sql = a + "SET UPDATE_REASON = 10, " + c;
		}
		return sql;
	}

	@Override
	public Object invoke(MethodInvocation invocation) throws Throwable {
		Object[] args = invocation.getArguments();
		for (int i = 0; i < args.length; i++) {
			Object o = args[i];
			if (o == null || !(o instanceof String)) continue;
			args[i] = spliceUpdateSQL(o.toString());
		}
        return invocation.proceed();
	}
}

 

 

 

 

 

二、Spring AOP配置

 

<bean id="sqlConvertorInterceptor" class="SQLConvertorInterceptor"/>
<aop:config>
	<aop:pointcut id="pointCut" expression="execution(* *.baseOp(..))"/>
	<aop:advisor advice-ref="sqlConvertorInterceptor" pointcut-ref="pointCut"/>
</aop:config>

 

 

 

 

三、示例

 

BaseDao baseDao = appContext.getBean("baseDao", BaseDao.class);

baseDao.baseOp("UPDATE t_order_log SET bid = 543, op_time = SYSDATE(), OPERATOR_ID = 500 WHERE bid = 543", null);

 

使用此配置后该SQL被修改如下, 然后再执行: 

UPDATE t_order_log SET UPDATE_REASON = 10, bid = 543, op_time = SYSDATE(), OPERATOR_ID = 500 WHERE bid = 543

 

分享到:
评论

相关推荐

    spring 配置aop时需要的jar包

    这个库包括了如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`等接口,它们定义了拦截器和通知(advice)的基本行为。在Spring AOP中,你需要实现这些接口来创建自定义的切面...

    spring_aop_拦截实例

    在Spring AOP中,我们通过定义一个实现了`org.springframework.aop.MethodInterceptor`接口的类来创建自定义拦截器。这个类需要实现`invoke`方法,该方法会在目标方法被调用之前和之后执行。 接下来,我们需要将...

    spring AOP依赖三个jar包

    1. aopalliance-1.0.jar:这是一个非常基础的AOP库,定义了AOP的核心接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`,这些接口为不同的AOP框架提供了统一的交互方式。Spring...

    spring_aop.zip

    在Spring AOP中,AOP Alliance接口如org.aopalliance.intercept.MethodInterceptor和org.aopalliance.aop.Advice是关键,它们定义了拦截器和通知(Advice)的行为。开发者可以实现这些接口来创建自定义的通知,例如...

    Spring AOP配置

    * 处理(Advice):AOP 框架在特定连接点执行的动作,以拦截器作为处理模型。 * 切入点(Pointcut):系列拦截点的集合,它确定处理触发的动机。 * 目标对象(Target Object):包含连接点的对象,也称为被处理对象...

    aopalliance-1.0

    在实际开发中,比如在Spring框架中,我们可以通过实现这些接口来定义自定义的拦截器,然后将其注册到Spring AOP容器中,从而实现对业务逻辑的灵活控制。 总之,AOP Alliance 1.0 为Java开发者提供了一种标准化的...

    spring aop实现

    3. MethodInterceptor:这是Spring AOP编程式实现的核心接口,它定义了拦截器链的执行逻辑。每个拦截器都可以在方法调用前后执行额外的操作。 ```java public class MyInterceptor implements MethodInterceptor { ...

    java 拦截器例子

    在Spring AOP中,也可以通过`@Aspect`和`@Around`注解来创建拦截器。`@Aspect`定义一个切面类,`@Around`定义一个环绕通知,即拦截器方法。 ```java @Component @Aspect public class MyAspect { @Around(...

    spring aop jar

    Spring AOP和AspectJ都是AOP Alliance的成员,这个库定义了一些基础的AOP接口,如MethodInterceptor和IntroductionInterceptor,Spring AOP使用这些接口来实现通知。 接下来,我们将深入探讨Spring AOP的几个关键...

    aopalliance最新完整jar包

    在Java应用中,aopalliance.jar包扮演着至关重要的角色,它包含了一些核心接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`,这些接口定义了拦截器和通知的概念,它们是AOP的...

    spring aop注解所需要的三个jar包,aspectjrt.jar,aspectjweaver.jar,aopalliance.jar

    在Spring中,许多Spring AOP的通知类型(如Before、After、Around等)都是基于AOP Alliance的接口实现的,这使得开发者可以在不关心具体AOP实现的情况下编写通用的拦截器和通知。 这三个JAR包在Spring AOP中的角色...

    spring+aspectjweaver-1.7.1.jar+aspectj-1.8.9.jar+aopalliance.jar

    Spring AOP就兼容了AOP Alliance的接口,因此,开发者可以编写符合AOP Alliance规范的拦截器和建议(Advice),并在Spring AOP中使用。 在实际应用中,当开发者需要在Spring AOP中使用AspectJ的切面功能时,会引入...

    Spring AOP 介绍

    下面是一个简单的XML配置示例,展示了如何配置上述的拦截器: ```xml 张三"/&gt; &lt;aop:config&gt; &lt;aop:aspect id="myBeforeAdvice" ref="myBeforeAdviceBean"&gt; &lt;aop:before method="before" pointcut="execution...

    aopalliance.zip

    在实际应用中,比如Spring框架,我们可以定义一个实现了`MethodInterceptor`接口的类,并在Spring配置中声明它为一个Bean。这样,Spring就会自动将这个拦截器应用到匹配的切入点上,执行我们的拦截逻辑。 总结来说...

    Spring Aop Advise方法(增强方法) 中获取目标方法的参数

    在Spring AOP(面向切面编程)中,Advise(增强方法)是核心概念之一,它允许我们在不修改原有业务代码的情况下,通过拦截器模式来插入额外的功能或行为。这篇博客文章“Spring Aop Advise方法(增强方法) 中获取目标...

    个人用java动态代理模拟实现spring aop

    Spring AOP提供了自动代理和基于注解的配置方式,但在这个模拟实现中,我们需要手动匹配切点、通知和目标方法,然后在`invoke()`或`intercept()`方法中执行相应的增强逻辑。 总结来说,通过Java动态代理,我们可以...

    aspectjweaver-1.8.7和aopalliance1.0

    aopalliance1.0是AOP Alliance的早期版本,它定义了一些基本的接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.MethodInvocation`,这些接口是拦截器模式的核心,允许在方法...

    aopalliance.jarr

    1. `org.aopalliance.intercept.MethodInterceptor`:这是一个关键接口,定义了拦截器的逻辑。拦截器允许我们在方法调用前后插入自定义的行为,比如记录日志、执行事务控制等。通过实现这个接口,我们可以创建自己的...

    aop所需jar包.rar

    `MethodInterceptor`接口定义了一个拦截器,它可以在方法调用前后执行自定义逻辑,而`MethodInvocation`接口代表了对目标方法的调用,提供了获取方法参数、目标对象等信息的能力。 在Spring框架中,AOP主要用于以下...

    aopalliance-1.0.jar

    然后,使用`@Before`、`@After`、`@Around`等注解来指定拦截器应该在哪些连接点执行。这样,我们就可以在不修改原始业务代码的情况下,轻松地添加日志、事务管理和权限检查等功能。 AOP Alliance 1.0.jar不仅简化了...

Global site tag (gtag.js) - Google Analytics