Solo  当前访客:1 开始使用


观察者模式

主要类

ApplicationEvent

ApplicationListener

ApplicationEventPublisher

事件发布订阅机制

好处

和方法调用的区别:可以做到异步和解藕

例子

定义事件、监听事件、发布事件

import org.springframework.context.ApplicationEvent;  
  
public class CustomEvent extends ApplicationEvent {  
    private String message;  
  
    public CustomEvent(Object source, String message) {  
        super(source);  
        this.message = message;  
    }  
  
    public String getMessage() {  
        return message;  
    }  
}
import org.springframework.context.ApplicationListener;  
import org.springframework.stereotype.Component;  
  
@Component  
public class CustomEventListener implements ApplicationListener<CustomEvent> {  
    @Override  
    public void onApplicationEvent(CustomEvent event) {  
        System.out.println("Received custom event - " + event.getMessage());  
    }  
}
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.context.ApplicationEventPublisher;  
import org.springframework.stereotype.Service;  
  
@Service  
public class EventPublishingService {  
    @Autowired  
    private ApplicationEventPublisher applicationEventPublisher;  
  
    public void publishEvent(final String message) {  
        CustomEvent customEvent = new CustomEvent(this, message);  
        applicationEventPublisher.publishEvent(customEvent);  
    }  
}
标签:
新一篇: Spring生命周期-初始化对象的过程 旧一篇: ApplicationEvent、ApplicationListener和ApplicationContext