观察者模式-Event事件

164 阅读1分钟

使用event实现观察者模式

Event

@Setter
@Getter
public class MessageEvent extends ApplicationEvent {

    private String mes;

    public MessageEvent(String mes, Object source) {
        super(source);
        this.mes = mes;
    }
}

Listener 第一种方式

@Component
public class MessageListener implements ApplicationListener<MessageEvent> {

    @Override
    public void onApplicationEvent(MessageEvent messageEvent) {
        //接收到订阅消息后,具体的处理的逻辑,此处只做打印测试
        String mes = messageEvent.getMes();
        System.err.println(mes);
    }

}

Listener 第二种方式

@Component
public class MessageListener {
    
    //此处通过注解,并且接收的Event事件要一致
    @EventListener
    public void deal(MessageEvent messageEvent) {
        String mes = messageEvent.getMes();
        System.err.println(mes);
    }

}

测试service

@Service
public class EventTestService implements ApplicationEventPublisherAware {

    private ApplicationEventPublisher applicationEventPublisher;

    @Override
    public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
        this.applicationEventPublisher = applicationEventPublisher;
    }

    public void test() {
        MessageEvent messageEvent = new MessageEvent("testMessage", this);
        applicationEventPublisher.publishEvent(messageEvent);
    }

}