`
xtuhcy
  • 浏览: 142562 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

奇怪的AOP方法被调用2次解决办法

    博客分类:
  • java
阅读更多

AOP的方法被调用2次,很是奇怪,最后发现是bean相互引用引起的,具体原理不知。

解决办法,在拦截器类中通过taget获得需要引用的方法。

 

如:

ServiceA引用了ServiceB

ServiceB引用了ServiceA

ServiceA中有拦截器Interceptor

Interceptor引用了ServiceB

 

此时Interceptor中的方法会被调用2次

解决版本就是Interceptor不引用ServiceB,还是通过((ServiceA)Target).getServiceB来获得ServiceB

 

0
0
分享到:
评论

相关推荐

    AOP实现自我调用的事物嵌套问题

    当我们遇到"AOP实现自我调用的事物嵌套问题"时,这通常涉及到Spring框架中的事务管理,特别是自调用方法在事务处理时可能会引发的问题。 首先,让我们理解Spring AOP的事务管理是如何工作的。Spring使用代理模式来...

    .net中attribute实现方法调用拦截(就是aop)

    在.NET中,我们可以通过Attribute来实现AOP的功能,这就是标题中提到的"attribute实现方法调用拦截"。 Attribute的使用通常是通过定义自定义Attribute类,然后在需要的地方应用这些特性。例如,我们可以创建一个`...

    Castle AOP 对类方法调用的拦截示例Deom(可运行)

    在这个"Castle AOP 对类方法调用的拦截示例Demo"中,我们将深入探讨如何使用Castle框架来实现AOP的拦截功能,并且这个示例是可运行的,这意味着你可以直接运行代码来理解其工作原理。 首先,让我们了解一下Castle....

    AOP修改方法的参数

    2. **实现 `InvocationHandler` 接口**:该接口中的 `invoke` 方法会在代理对象调用目标方法时被触发。 3. **修改参数值**:在 `invoke` 方法内部,可以获取到方法的参数列表,并对其进行修改。 #### 三、代码示例 ...

    swift-利用AOP的思想通过方法交换(MethodSwizzle黑魔法修改ios系统类库方法)的做法

    2. 定义新的方法实现,并添加到类中:`class_addMethod(class, swizzledSelector, method_getImplementation(newImplementation), method_getTypeEncoding(newImplementation))` 3. 获取新方法的Method对象:`let ...

    aop切面拦截单个方法实例

    通过配置Spring的AOP配置,我们可以指定哪些类或方法需要被这个切面拦截。这样,无需在每个业务方法中添加日志代码,就能实现全局的日志记录。 总之,AOP是Spring框架的重要特性,它提供了一种有效管理和组织横切...

    spring aop之链式调用的实现

    Spring AOP 之链式调用的实现 在 software development 中,Aspect-Oriented Programming(AOP)是一种编程范式,旨在将横切关注点从业务逻辑中分离出来,使得代码更加模块化、灵活和可维护。Spring AOP 是一种基于...

    Spring  AOP实现方法大全

    2. **After Advice**:在目标方法执行之后调用,无论方法是否正常结束。Spring提供了两种After Advice:`AfterReturningAdvice`和`AfterThrowingAdvice`。前者在方法正常返回时调用,后者在方法抛出异常时调用。 3....

    aopalliance-1.0.jar及aopalliance源码

    2. **MethodInvocation**: 表示一个方法调用的上下文,提供了访问被拦截方法的相关信息,如方法名、参数值、目标对象等。`MethodInvocation`接口允许拦截器在调用原始方法之前和之后进行操作。 **源码分析** `aop...

    Castle AOP 系列(二):对接口方法调用的拦截(可运行源码)

    **Castle AOP 系列(二):对接口方法调用的拦截** 在软件开发中,面向切面编程(Aspect-Oriented Programming, AOP)是一种编程范式,它允许程序员将关注点从核心业务逻辑中分离出来,放到所谓的“切面”中,如日志...

    AOP根据方法名匹配织入

    "AOP根据方法名匹配织入"指的是通过指定方法名来决定哪些方法应该被切面影响。这种策略允许我们精确控制切面的应用范围,只对那些具有特定方法名的方法进行增强。 首先,我们需要了解Spring AOP的术语: 1. **切点...

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

    这篇博客文章“Spring Aop Advise方法(增强方法) 中获取目标方法的参数”可能详细解释了如何在Advise中获取被拦截方法的参数。为了深入理解这个主题,我们需要探讨以下几个关键知识点: 1. **AOP的基本概念**: - ...

    spring aop spring aop

    2. **切点(Pointcut)**:切点是程序执行流程中的特定位置,比如某个方法的调用。在示例代码中,`@Before("execution(* *(..))"`定义了一个切点,匹配所有方法的调用。`execution(* *(..))`是一个表达式,表示任何...

    Java利用spring aop进行监测方法执行耗时

    使用 Spring AOP 进行方法耗时监测的好处有以下几点: 1. 代码实现简单,易于维护:使用 Spring AOP 可以将耗时监测的逻辑与业务逻辑进行解耦,避免业务逻辑代码的冗余和代码维护难度的提高。 2. 安全性高:使用 ...

    aop示例spring 的aop思想解决项目中多次出现的同一个问题

    3. **连接点(Join Point)**:程序执行过程中的一个特定点,如方法调用或异常抛出。 4. **切点(Pointcut)**:匹配连接点的规则,定义了通知将在何时何地执行。 5. **织入(Weaving)**:将切面应用到目标对象,...

    spring AOP拦截方法小示例

    这个“spring AOP拦截方法小示例”是一个实际应用,展示了如何使用Spring AOP来拦截特定层的所有方法,并在调用前后以及出现异常时执行自定义逻辑。 首先,让我们了解AOP的基本概念。AOP的核心是切面(Aspect),它...

    动态方法拦截(AOP)的N种解决方案.docx

    表达式树可以被编译成委托,因此可以用于动态构建方法调用,插入拦截行为。这种方式更加直观,易于理解和调试,但可能比IL Emit稍慢。 4. **Dynamic Proxy(例如Castle Dynamic Proxy)** Castle Dynamic Proxy 是...

    spring aop切面拦截指定类和方法实现流程日志跟踪

    在上述代码中,我们定义了一个名为`SpringAopLog`的切面类,并通过注解指定了哪些方法会在目标方法执行前后被调用。在`afterReturn`方法中,根据不同的方法名来记录不同的日志信息。 #### 四、总结 通过Spring AOP...

Global site tag (gtag.js) - Google Analytics