使用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 {
@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);
}
}