/**
* 自定义事件
* 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);
}
}