事件
import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationEvent;import org.springframework.stereotype.Component;@Componentpublic class Event extends ApplicationEvent {/*** 构造器* @param source*/public Event(ApplicationContext source) {super(source);}/*** 模拟业务执行逻辑*/public void echo(){System.out.println("模拟业务执行逻辑");}}
事件监听
import com.test.demo.textdemo.gcz.event.Event;import org.springframework.context.ApplicationListener;import org.springframework.stereotype.Component;@Componentpublic class EventListener implements ApplicationListener<Event> {@Overridepublic void onApplicationEvent(Event event) {event.echo();}}
或
import com.test.demo.textdemo.gcz.event.Event;import org.springframework.context.event.EventListener;import org.springframework.stereotype.Component;@Componentpublic class EventListenerAnon {@EventListenerpublic void onApplicationEvent(Event event) {event.echo();}}
事件发布
import com.test.demo.textdemo.gcz.event.Event;import org.springframework.beans.BeansException;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.stereotype.Component;@Componentpublic class PublisherAware implements ApplicationContextAware {private ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {this.applicationContext = applicationContext;}public void publisherEvent(Event event) {System.out.println("---开始发布 Event 事件---");applicationContext.publishEvent(event);}}
单元测试
import com.test.demo.textdemo.TextDemoApplication;import com.test.demo.textdemo.gcz.event.Event;import com.test.demo.textdemo.gcz.publisher.PublisherAware;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;@SpringBootTest(classes = TextDemoApplication.class)@RunWith(SpringRunner.class)public class TestDemo {@Autowiredprivate PublisherAware publisherAware;@Autowiredprivate Event event;@Testpublic void test() {publisherAware.publisherEvent(event);}}//runtime---开始发布 Event 事件---模拟业务执行逻辑模拟业务执行逻辑
