如果值节省成功,我想保留成功日志。最初,我像下面的代码一样,在底部留下了一个日志。
@Transactional
public void save(Long id, String target) {
repository.save(id, target);
log.info("save success! -> id : {}, target : {}", id, target);
}
woding,在记录的那一刻,这些值尚未反映在DB中,因此,如果以后逻辑出现问题,则将记录日志,但实际上不会保存值。所以我意识到自己正在登录错误的地方。 where是一个问题:作为解决方法,我打算在DB提交(即实际保存该值之后)并寻找信息后使用
TransactionalEventListener
进行日志。,但是,我很难找到为此目的使用听众的例子,所以我想知道为此目的使用
TransactionalEventListener
感谢您的帮助
由于
@Transactional
注释,为此方法维护了ACID
这里是
@TransactionalEventListener
:的一个例子 listener
TransactionalEventListener
event
@Component
@Slf4j
public class TransactionLogEventListener {
@EventListener
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
public void handleTransactionEvent(TransactionLogEvent event) {
log.info("save success! -> id : {}, target : {}", event.getId(), event.getTarget());
}
}
@Getter
public class TransactionLogEvent extends ApplicationEvent {
private final Long id;
private final String target;
public TransactionEmailEvent(Object source, Long id, String target) {
super(source);
this.id = id;
this.target = target;
}
}