假设我的服务的所有公共方法都有一个方面包装器,它在将实体返回到控制器之前将它们从数据库中分离出来:
@Around("execution(public * *(..)) && @within(org.springframework.stereotype.Service)")
当一个服务直接调用另一个服务时,这个包装器也会被触发。例如:
@Service
class ServiceA {
@Autowired
ServiceB b;
public void foo() {
b.bar();
}
}
@Service
class ServiceB {
public void bar() {
}
}
当我调用ServiceA.foo()
时,包装器也会围绕嵌套调用触发bar()
。
它应该围绕对 的调用触发foo()
,但不是bar()
。我怎样才能避免这种情况?