spring 实现事件的异步处理


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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值