Java版本
public class WeatherSubject extends Observable {
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
super.setChanged();
super.notifyObservers(content);
}
}
public class AObserver implements Observer {
private String observerName;
@Override
public void update(Observable o, Object arg) {
System.out.println(observerName + " --推模式收到->" + arg);
System.out.println(observerName + " --拉模式->" + ((WeatherSubject) o).getContent());
}
public String getObserverName() {
return observerName;
}
public void setObserverName(String observerName) {
this.observerName = observerName;
}
}
public static void main(String[] args) {
WeatherSubject2 subject2 = new WeatherSubject2();
AObserver aObserver = new AObserver();
aObserver.setObserverName("黄明的女朋友");
AObserver bObserver = new AObserver();
bObserver.setObserverName("黄明的老妈");
subject2.addObserver(aObserver);
subject2.addObserver(bObserver);
subject2.setContent("天气很好啊~~~~~~~~~~~");
}
Springboot版本
public class CustomEvent extends ApplicationEvent {
private MessageEntity messageEntity;
public CustomEvent(Object source,MessageEntity messageEntity) {
super(source);
this.messageEntity = messageEntity;
}
public MessageEntity getMessageEntity() {
return this.messageEntity;
}
}
public class MessageEntity {
private String message;
private String code;
public MessageEntity(String message, String code) {
this.message = message;
this.code = code;
}
}
@Component
public class CustomEventListener implements ApplicationListener<CustomEvent> {
@Override
public void onApplicationEvent(CustomEvent event) {
System.out.println("event = " + event);
}
}
@Component
public class CustomEventListener2 implements ApplicationListener<CustomEvent> {
@Override
public void onApplicationEvent(CustomEvent event) {
System.out.println("event2 = " + event);
}
}
@Component
public class CustomEventListener3 {
@EventListener(condition = "#event.messageEntity.code == 'code'")
public void onApplicationEvent(CustomEvent event) {
System.out.println("event3 = " + event);
}
}
@RestController
@ResponseBody
public class CustomApplicationEventPublisher {
@Autowired
ApplicationEventPublisher eventPublisher;
@GetMapping("/push")
public String push(String code,String message) {
eventPublisher.publishEvent(new CustomEvent(this, new MessageEntity("msg","code")));
return "事件发布成功!";
}
}