サービスのすべてのパブリックメソッドにアスペクトラッパーがあり、エンティティをコントローラーに返す前にデータベースからデタッチするとします。
@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()
。どうすればこれを回避できますか?