当前位置:   article > 正文

java 监听事件_java 监听事件getsqlcommandtype

java 监听事件getsqlcommandtype

建立抽象对象 TransactionalEvent

import org.hibernate.Session;

public abstract class TransactionalEvent {
    private final Session session;

    protected TransactionalEvent(Session session) {
        this.session = session;
    }

    public Session getSession() {
        return session;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

建立监听

public interface TransactionalEventListener<T extends TransactionalEvent> {
    void onEvent(T event);

    Class<T> getSupportEventType();
}
  • 1
  • 2
  • 3
  • 4
  • 5

建立发布事件

@Component
public class TransactionalEventPublisher {
    private final List<TransactionalEventListener> listeners;

    public TransactionalEventPublisher(List<TransactionalEventListener> listeners) {
        this.listeners = listeners;
    }

    public void publish(TransactionalEvent event) {
        for (TransactionalEventListener listener : listeners) {
            if (listener.getSupportEventType() == event.getClass()) {
                listener.onEvent(event);
            }
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

实现:

    @Override
    public void update(Entity entity) {
        TransactionalEventPublisher publisher = SpringContextUtil.getBean(TransactionalEventPublisher.class);
        try {
            publisher.publish(new newEvent(session, entity));
        } catch (Throwable e) {
            throw new RuntimeException(e);
        }
        super.update(entity);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
public class newEvent extends TransactionalEvent {

    private final Entity entity;

    public newEvent(Session session, Entity entity) {
        super(session);
        this.entity = entity;
    }

    public newEvent getNewEvent() {
        return entity;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
@Component
public class EntityListener implements TransactionalEventListener<Entity> {
    @Override
    public void onEvent(Entity event) {

    }

    @Override
    public Class<Entity> getSupportEventType() {
        return Entity.class;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/914229
推荐阅读
相关标签
  

闽ICP备14008679号