gpt4 book ai didi

java - 抽象类的 protected 方法的 Spring 切入点

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:11:05 26 4
gpt4 key购买 nike

我正在使用 Spring 3.2AspectJ 1.7.1。 (我不太可能在不久的将来升级到更高版本。)

我需要为抽象类中的 protected 方法定义一个切入点。 AFAIK 我需要 AspectJ 用于非公共(public)方法,所以我只尝试使用 (AspectJ) 注释:

package com.aspects;
@Aspect
public class Aspect{

@Before("execution(* com.x.y.x.MyClass.myMethod(..))")
public void beforeAspect(){
//do something here
}

}

在我的 beans.xml 中我有:

<aop:aspectj-autoproxy />
<bean id="myAspect" class="com.aspects.Aspect"/>

我已经检查并创建了我的 Aspect 类(正在调用构造函数),启动应用程序时没有抛出异常。但是我无法调用 beforeAspect 。对于非抽象类中的公共(public)方法,这是可行的。我怎样才能让它适用于抽象类中的 protected 方法?

最佳答案

您应该在抽象类之后添加一个+ 符号。

所以

"execution(* com.x.y.x.MyClass.myMethod(..))" 

应该看起来像:

"execution(* com.x.y.x.MyClass+.myMethod(..))"

+ 是关于扩展给定类 (MyClass) 或实现接口(interface)的继承。

关于java - 抽象类的 protected 方法的 Spring 切入点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21002992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com