这个Spring教程是否正确?

时间:2014-03-17 10:38:08

标签: java spring spring-mvc

我正在关注this教程以设置Spring Restful Service。在教程的底部,它说:

  

另请注意id属性如何从1更改为2.这证明您正在跨多个请求对抗同一个GreetingController实例,并且每次调用时其计数器字段都会按预期递增。

但代码是在每个请求上创建一个新实例,传入计数器的新值:

@RequestMapping("/greeting")
public @ResponseBody Greeting greeting ( @RequestParam (value="name", required=false, defaultValue="World") String name) {
    return new Greeting(counter.incrementAndGet(), String.format(template, name));
}

注意"新问候"码。我在这里遗漏了什么,或者教程解释不正确吗?

2 个答案:

答案 0 :(得分:0)

我认为你让GreetingGreetingController感到困惑。您只有一个控制器(计数器在控制器内部)和多个Greeting实例。

答案 1 :(得分:0)

  

另请注意id属性如何从1更改为2.这证明了   您正在对同一个GreetingController实例进行操作   跨多个请求,以及它的计数器字段   按预期在每次通话时递增。

这意味着GreetingController 单个实例 通过网址/greeting提供所有GET请求

请注意,GreetingController有一个名为final的{​​{1}}字段。如果为不同的请求创建了不同的counter个实例,GreetingController将始终返回counter。由于1正在返回counter等等,因此作者断言只有1,2,.. 单个实例 正在服务所有请求。

响应涉及创建GreetingController对象,该对象包装new Greeting返回的新值。不要将它与counter.incrementAndGet()

混淆