在我的 spring
项目中,我添加了两个依赖项:
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.2</version>
</dependency>
然后我创建了一个类:
package com.my.company.package.handling;
@Aspect
public class MyAspect {
@AfterThrowing(pointcut = "execution(* com.my.company.package.*(..))", throwing = "ex")
public void logAfterThrowing(Exception ex) {
System.out.println("exception "+ex.getLocalizedMessage())
}
}
现在在其他一些类中(存储在包中:com.my.company.package.someOtherPackage
)我抛出异常:
throw new IOException("here comes error");
但是我在控制台中看不到方面方法的打印输出。我在这里缺少什么?
最佳答案
假设其他一切都是正确的,您还需要一个 @Component 注释,您还需要在任何类的执行字符串中另一个 * 。
@Aspect
@Component
public class MyAspect {
@AfterThrowing(pointcut = "execution(* com.my.company.package.*.*(..))", throwing = "ex")
public void logAfterThrowing(Exception ex) {
System.out.println("exception "+ex.getLocalizedMessage())
}
}
这是一个工作 example
关于java - 为什么抛出异常时我的方面代码不运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55023224/