почему мой код аспекта не запускается при возникновении исключения? - PullRequest
1 голос
/ 06 марта 2019

В моем проекте 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");

но тогда я не вижу распечатки из моего метода аспекта в консоли. Что мне здесь не хватает?

1 Ответ

0 голосов
/ 06 марта 2019

Если все остальное правильно, вам также нужна аннотация @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())
    }
}

Вот рабочий пример

...