spring中如何通过注解修改controller的方法体和返回值?

spring-mvc的controller的方法如下:

@RequestMapping("call")
@ResponseBody
public String test() {
    longTimeBiz.call();
    return "test success";
}

目前希望接入servlet3.0的异步化功能,controller代码需修改为:

@RequestMapping("async")
@ResponseBody
public Callable<String> callable() {
    return new Callable<String>() {
        @Override
        public String call() throws Exception {
            log.info("enter callable");
            longTimeBiz.call();
            return "test success";
        }
    };
}

对比同步和异步调用,主要区别有:

  1. 异步调用返回值类型为Callable。
  2. 同步调用的方法体被包在Callable的call方法中。

在使用异步化过程中,需要改造所有老接口,修改返回值和方法体。

请问,是否可以通过spring注解的方式,统一修改返回值和方法体,将同步调用的代码修改成异步调用?

阅读 4.3k
1 个回答

你看看这样的思路ok不。
配置一个HandlerInterceptorAdapter的实现,在preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)方法中处理,比如包成一个AsyncTask,最后return false;
这样做会接手不少mvc的工作,可以尝试下。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题