春のサービスから、クライアントを介して外部システムを呼び出したいとしましょう。その呼び出しが失敗した場合 (チェックされていない例外がスローされた場合)、ログに記録し、DB の注文ステータスを更新し、ロールバックされるトランザクションの例外を再スローします。 ..
以下のサンプル コードがアンチパターンと見なされていることは知っていますが、これを実現するためのより良い方法は考えられません...何かコメントはありますか?
public class Service {
@Autowired(required = true)
private Client client;
@Autowired(required = true)
private DAO d;
@Transactional
@Override
public void register(String id) {
try{
client.invoke(id);//throws Client unchecked exception
}
catch (ClientException e){
LOG.error (e);
d.updateStatus(id,"failed");
throw e;
}
}
}