Как выполнить совет из конкретного пакета? - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть фрагмент кода:

@Aspect
public class PointcutDefinition {

    @Pointcut("within(com.byteslounge.web..*)")
    public void webLayer() {
    }

    @Pointcut("within(com.byteslounge.service..*)")
    public void serviceLayer() {
    }

    @Pointcut("within(com.byteslounge.dao..*)")
    public void dataAccessLayer() {
    }

}

и LoggingAspect.java:

@Aspect
public class AccountLoggingAspect {

    @Before(value = "com.byteslounge.spring.aop.PointcutDefinition.serviceLayer() && "
            + "args(account,..)")
    public void beforeAccountMethodExecution(JoinPoint jp, Account account) {

        System.out.println("Before method: " + jp.getSignature().getName() + ". Class: " + jp.getTarget().getClass().getSimpleName());

        System.out.println("Logging account access. Account: " + account.getAccountNumber());
    }

}

и класс обслуживания, как показано ниже:

@Service
public class ExampleService {

    @Auditable(AuditDestination.DATABASE)
    public void updateAccountBalance(Account account) {
        System.out.println("Inside updateAccountBalance(). Account: " + account.getAccountNumber() );
    }

}

beforeAccountMethodExecution() исполняется до updateAccountBalance(Account account).Но я хочу, чтобы этот вызов перехвата выполнялся только тогда, когда я вызываю updateAccountBalance(Account account) из определенного пакета, а не из другого места.Проще говоря, я хочу, чтобы AOP функционировал только тогда, когда updateAccountBalance вызывается из пакета "xyz".Есть ли выход?

...