一、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
相关推荐
这个库包括了如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`等接口,它们定义了拦截器和通知(advice)的基本行为。在Spring AOP中,你需要实现这些接口来创建自定义的切面...
在Spring AOP中,我们通过定义一个实现了`org.springframework.aop.MethodInterceptor`接口的类来创建自定义拦截器。这个类需要实现`invoke`方法,该方法会在目标方法被调用之前和之后执行。 接下来,我们需要将...
1. aopalliance-1.0.jar:这是一个非常基础的AOP库,定义了AOP的核心接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`,这些接口为不同的AOP框架提供了统一的交互方式。Spring...
在Spring AOP中,AOP Alliance接口如org.aopalliance.intercept.MethodInterceptor和org.aopalliance.aop.Advice是关键,它们定义了拦截器和通知(Advice)的行为。开发者可以实现这些接口来创建自定义的通知,例如...
* 处理(Advice):AOP 框架在特定连接点执行的动作,以拦截器作为处理模型。 * 切入点(Pointcut):系列拦截点的集合,它确定处理触发的动机。 * 目标对象(Target Object):包含连接点的对象,也称为被处理对象...
在实际开发中,比如在Spring框架中,我们可以通过实现这些接口来定义自定义的拦截器,然后将其注册到Spring AOP容器中,从而实现对业务逻辑的灵活控制。 总之,AOP Alliance 1.0 为Java开发者提供了一种标准化的...
3. MethodInterceptor:这是Spring AOP编程式实现的核心接口,它定义了拦截器链的执行逻辑。每个拦截器都可以在方法调用前后执行额外的操作。 ```java public class MyInterceptor implements MethodInterceptor { ...
在Spring AOP中,也可以通过`@Aspect`和`@Around`注解来创建拦截器。`@Aspect`定义一个切面类,`@Around`定义一个环绕通知,即拦截器方法。 ```java @Component @Aspect public class MyAspect { @Around(...
Spring AOP和AspectJ都是AOP Alliance的成员,这个库定义了一些基础的AOP接口,如MethodInterceptor和IntroductionInterceptor,Spring AOP使用这些接口来实现通知。 接下来,我们将深入探讨Spring AOP的几个关键...
在Java应用中,aopalliance.jar包扮演着至关重要的角色,它包含了一些核心接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`,这些接口定义了拦截器和通知的概念,它们是AOP的...
在Spring中,许多Spring AOP的通知类型(如Before、After、Around等)都是基于AOP Alliance的接口实现的,这使得开发者可以在不关心具体AOP实现的情况下编写通用的拦截器和通知。 这三个JAR包在Spring AOP中的角色...
Spring AOP就兼容了AOP Alliance的接口,因此,开发者可以编写符合AOP Alliance规范的拦截器和建议(Advice),并在Spring AOP中使用。 在实际应用中,当开发者需要在Spring AOP中使用AspectJ的切面功能时,会引入...
下面是一个简单的XML配置示例,展示了如何配置上述的拦截器: ```xml 张三"/> <aop:config> <aop:aspect id="myBeforeAdvice" ref="myBeforeAdviceBean"> <aop:before method="before" pointcut="execution...
在实际应用中,比如Spring框架,我们可以定义一个实现了`MethodInterceptor`接口的类,并在Spring配置中声明它为一个Bean。这样,Spring就会自动将这个拦截器应用到匹配的切入点上,执行我们的拦截逻辑。 总结来说...
在Spring AOP(面向切面编程)中,Advise(增强方法)是核心概念之一,它允许我们在不修改原有业务代码的情况下,通过拦截器模式来插入额外的功能或行为。这篇博客文章“Spring Aop Advise方法(增强方法) 中获取目标...
Spring AOP提供了自动代理和基于注解的配置方式,但在这个模拟实现中,我们需要手动匹配切点、通知和目标方法,然后在`invoke()`或`intercept()`方法中执行相应的增强逻辑。 总结来说,通过Java动态代理,我们可以...
aopalliance1.0是AOP Alliance的早期版本,它定义了一些基本的接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.MethodInvocation`,这些接口是拦截器模式的核心,允许在方法...
1. `org.aopalliance.intercept.MethodInterceptor`:这是一个关键接口,定义了拦截器的逻辑。拦截器允许我们在方法调用前后插入自定义的行为,比如记录日志、执行事务控制等。通过实现这个接口,我们可以创建自己的...
`MethodInterceptor`接口定义了一个拦截器,它可以在方法调用前后执行自定义逻辑,而`MethodInvocation`接口代表了对目标方法的调用,提供了获取方法参数、目标对象等信息的能力。 在Spring框架中,AOP主要用于以下...
然后,使用`@Before`、`@After`、`@Around`等注解来指定拦截器应该在哪些连接点执行。这样,我们就可以在不修改原始业务代码的情况下,轻松地添加日志、事务管理和权限检查等功能。 AOP Alliance 1.0.jar不仅简化了...