从方面处理中排除架构服务

Exclude architectural services from being processed by aspect

我正在创建一个方面来包装我的服务,但我也在包下定义了一些服务

com.foo.arch

我的申请 类 将改为

com.foo

请注意 arch 是 com.foo 的子包,但我不能输入 "arch" 关键字 before.Isn 没有切入点表达式:

All classess under com.foo not having "arch" as third package?

考虑一个接口SampleService

  public interface SampleService {
        void test();
    }

在这三个包中有 3 个实现

com

com.foo

com.foo.arch

要排除 arch 包的一个方面和 comcom.foo 下的唯一建议 类 如下

@Component
@Aspect
public class ExcludeAspect {

    @Around("execution(* test()) && !within(com.foo.arch.*)")
    public void adviceTestMethod(ProceedingJoinPoint pjp) throws Throwable {
        System.out.println("Adviced");
        pjp.proceed();
    }
}

参考: within

Combining Pointcut Expressions

希望这对您有所帮助

将这个添加到你的切入点怎么样?

within(com.foo..*) && !within(com.foo.arch..*)

这将捕获 com.foo 的所有子包,com.foo.arch 及其各自的子包除外。

如果您只想要 com.foo 而根本不需要子包,则只需:

within(com.foo.*)