带有和不带可调用的弹簧控制器

时间:2015-07-21 06:12:14

标签: java spring spring-mvc spring-restcontroller

首先我写了一个简单的Spring REST控制器

 @RequestMapping(value = "/id", method = RequestMethod.GET)
    public String getDetails(@PathVariable("id") String id) {
       // wrote logic for JSON response....
}

其次我们需要提高性能,所以我使用Callable这样编写控制器

@RequestMapping(value = "/id", method = RequestMethod.GET)
        public String getDetails(@PathVariable("id") String id) {
          return new Callable<String>(){
          @Override
          public String call() throws Exception {
           // ...
          return "someJSONString";
         }
       }
    }

现在的问题是,当我使用JMETER比较上述两种方法的性能时,我没有看到任何重大差异。

编写Callable控制器时,我是否会遗漏任何内容?

1 个答案:

答案 0 :(得分:0)

使用Callable接口无法提高单个请求性能,在某些情况下有助于获取更多请求。如果您的响应类型无效,则可以使用runnable而不是callable,因此使用runnable可以改善单个请求响应时间。例如,如果您的服务适合fork / join框架,请尝试使用它。