/** * 自定义事件 * Created by szy on 2017/3/30. */ public class DemoEvent extends ApplicationEvent { private String msg; private List<String> list; public DemoEvent(Object source,String msg,List<String> list) { super(source); this.msg=msg; this.list = list; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public List<String> getList() { return list; } public void setList(List<String> list) { this.list = list; } }
/** * 自定义监听器 * Created by szy on 2017/3/30. */ @Component public class DemoListener implements ApplicationListener<DemoEvent> { @Async @Override public void onApplicationEvent(DemoEvent demoEvent) { try { System.out.println(Thread.currentThread().getName()); //模拟业务耗时 Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } String msg = demoEvent.getMsg(); System.out.println("receive msg from demoevent publish : "+msg); System.out.println( "receive list from demoevent publish : " +demoEvent.getList().toString()); } }
/** * 事件发布类 * * Created by szy on 2017/3/30. */ @Component public class DemoPublish { @Autowired private ApplicationContext applicationContext; public void publish(String msg, List<String> list){ applicationContext.publishEvent(new DemoEvent(this,msg,list)); } }
/** * Created by szy on 2017/3/30. */ @RestController public class DemoController { @Autowired private ApplicationContext ctx; @RequestMapping("/") public void test(){ DemoPublish demoPublish = ctx.getBean(DemoPublish.class); List<String> list = new ArrayList<>(); list.add("huahua"); list.add("huahua1"); list.add("huahua2"); demoPublish.publish("hello young!",list); System.out.println("end"); } }
/** *启动类 */ @SpringBootApplication @EnableAsync public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }