ken653265的gravatar头像
ken653265 2016-07-18 11:15:41
spring3.0使用Async注解实现异步延迟的操作

对于我们的web项目,一般来说,我们都是同步执行一些数据,所谓同步就是按照顺序,执行完这个然后有序的执行下一个,但是有时我们需要延迟执行一些数据,并且这些数据我们不需要实时的返回的,比如是注册成功,我们会返回一封邮件给用户,这个邮件我们可以在用户注册成功后的5分钟,或者10分钟后向用户发送,那么我们就需要一个延迟函数。一般来说,我们可能直接就会使用new thread开启一条线程来实现来实现,会在Spring mvc或者Struts中这样实现

 

new Thread(new Runnable() {

@Override

public void run() {

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}).start();

但是从spring 3.0版本开始,我们可以直接通过Async注解来实现我们的延迟操作了。

要使用Async注解,首先在applicationContext.xml加入如下代码

<task:annotation-driven/>

@ResponseBody

@RequestMapping(value = “/register”)

public String register(String username,String passwd) {

JSONObject jsonObject=new JSONObject();

jsonObject.put(“status”, 1000);

jsonObject.put(“username”, username);

AsyncSendMail(username);

return jsonObject.toString();

}

@Async

public void AsyncSendMail(String touser){

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//执行发送邮件的操作

System.out.println(“touser==”+touser);

} 


打赏
最近浏览
cgyin2009 2020年12月22日
暂无贡献等级
vinod1213  LV12 2020年8月11日
wkc  LV21 2020年6月28日
weienqing  LV17 2017年11月15日
王思峰  LV8 2017年6月8日
k7262140  LV2 2016年12月18日
springlala  LV2 2016年12月8日
流浪者  LV29 2016年12月3日
lcjz99  LV11 2016年11月2日
红蓝死忠  LV1 2016年10月4日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友