/** * Copyright (c) 2005-2012 https://github.com/zhangkaitao * * Licensed under the Apache License, Version 2.0 (the "License"); */ package com.sishuok.chapter3.web.interceptor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.context.request.async.DeferredResult; /** * * 测试时开启springmvc-config.xml中的mvc:deferred-result-interceptors * * <p>User: Zhang Kaitao * <p>Date: 13-7-18 下午9:16 * <p>Version: 1.0 */ @Controller public class MyDefferedResultController { @RequestMapping("/myDefferedResult1") @ResponseBody public DeferredResult<String> myDefferedResult1() { final DeferredResult<String> result = new DeferredResult<String>(); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(2 * 1000L); } catch (InterruptedException e) { } System.out.println("设置DeferredResult的成功时结果"); result.setResult("success"); } }).start(); return result; } @RequestMapping("/myDefferedResult2") @ResponseBody public DeferredResult<String> myDefferedResult2() { final DeferredResult<String> result = new DeferredResult<String>(); new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(31 * 1000L); } catch (InterruptedException e) { } System.out.println("设置DeferredResult的成功时结果(将发生在异步任务完成后执行,因为超时了,结果无效)"); result.setResult("success"); } }).start(); return result; } }