赞
踩
建立抽象对象 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;
}
}
建立监听
public interface TransactionalEventListener<T extends TransactionalEvent> {
void onEvent(T event);
Class<T> getSupportEventType();
}
建立发布事件
@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); } } } }
实现:
@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);
}
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;
}
}
@Component
public class EntityListener implements TransactionalEventListener<Entity> {
@Override
public void onEvent(Entity event) {
}
@Override
public Class<Entity> getSupportEventType() {
return Entity.class;
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。