比方说,我对我的服务,其中分离从数据库实体的所有公共方法一个方面的包装把他们送回控制器之前:避免嵌套调用
@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()
。我怎样才能避免这种情况?
我想出了这个,让我想知道是否真的没有简单的方法。感觉如此普遍和自然。 –
@KonradGarus:好吧,我在使用这个时需要在两个调用之间共享一些对象。但我认为它符合你的问题,并没有那么复杂(但我不喜欢疯狂地使用线程局部变量)。 – sinuhepop
我明白了。我绝对适合,我只是想知道是否没有开箱即用的解决方案。谢谢,如果没有这样的答案,我会接受。 –