java - 为什么抛出异常时我的方面代码不运行?

标签 java spring aspectj

在我的 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/

相关文章:

java - weka 中模型的奇怪结果

java - 获取触摸屏上的点击计数鼠标监听器

spring - spring boot需要WAS(Websphere Application Server)吗?

java - 重构方面的异常?

java - 错误: variable might not have been initialized

java - Android AlarmManager设置?

spring - Intellij IDEA 解析自定义 bean - 找不到命名空间的自定义处理程序

java - 从外部 jar 文件获取 spring boot 计划的 cron 表达式

spring - 如何在没有接口(interface)的情况下使用加载时间编织配置 AspectJ

java - AspectJ(注释)编译时与 Ant 和 NetBeans 编织