非同期タスクと、すぐに戻ってバックグラウンドでタスクを開始するページを実装したいと思います。ただし、ページはバックグラウンド タスクが完了するまで待機し、その後でのみ戻ります。私がアクセス/start
すると、ページの読み込みに 15 秒かかります。Spring 3.2.0 を使用しています。<task:annotation-driven/>
test-servlet.xml に含まれる行があります。
奇妙なことに、@Async を @Async("this_bean_does_not_exist") に置き換えても、アプリケーションは同じことを行います (ただし、存在しない Bean を参照するための例外が予想されます)。
public interface AsyncTestService {
void startSlowProcess();
}
@Service
public class AsyncTestServiceImpl implements AsyncTestService {
@Override
@Async
public void startSlowProcess() {
try {
Thread.sleep(15000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
@Controller
public class TestController {
@Autowired
AsyncTestService asyncTestService;
@RequestMapping("/start")
@ResponseBody
public String startSlowProcess() {
asyncTestService.startSlowProcess(); // It takes 15s to complete
return "STARTED"; // should return immediately
}
}