我想在数据库事务之前和之后检测我的代码。我扩展了org.hibernate.EmptyInterceptor
并在其中添加了检测逻辑。
我想知道它是否在正确的地方,或者我可以使用其他任何SPI来做到这一点?
示例代码
public class TxnInterceptor extends EmptyInterceptor {
@Override
public void afterTransactionBegin(Transaction tx) {
Span span = ThreadLocalSpan.CURRENT_TRACER.next();
if (span != null || !span.isNoop()) {
span.kind(Span.Kind.CLIENT).name("db.transaction");
span.start();
}
}
@Override
public void afterTransactionCompletion(Transaction tx) {
Span span = ThreadLocalSpan.CURRENT_TRACER.remove();
if (span != null || !span.isNoop()) {
span.finish();
}
}
}
注意:使用Zipkin Brave进行检测