Spring MVC RESTful 使用 Jackson 的 Web 服务:如何限制 URL 的子集

Spring MVC RESTful web services with Jackson: How to restrict to subset of URLs

按照此处列出的步骤 http://www.journaldev.com/2552/spring-restful-web-service-example-with-json-jackson-and-client-program ,我已经能够完全按照我的需要设置我的 RESTful WS。

现在,我想让这个应用程序上下文成为 RESTful WS(在特定 URL 前缀 /myapp/rest/ 下)和站点其余部分的标准 MVC 映射的混合体.

但是从 servlet-context XML 文件中,我真的无法弄清楚如何限制 MappingJackson2HttpMessageConverter 仅适用于某个 URL 前缀。

<!-- Configure to plugin JSON as request and response in method handler -->
<beans:bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
    <beans:property name="messageConverters">
        <beans:list>
            <beans:ref bean="jsonMessageConverter"/>
        </beans:list>
    </beans:property>
</beans:bean>

<!-- Configure bean to convert JSON to POJO and vice versa -->
<beans:bean id="jsonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
</beans:bean> 

还有什么我应该在这里检查的吗?

谢谢 黄

您可以在同一应用程序中同时拥有 SpringMVC 样式控制器和 SpringMVC REST 样式控制器。事实上,您也可以在同一个控制器中编写一个 SpringMVC 处理程序方法和一个 REST 端点。

@Controller
public class MyController
{
    @RequestMapping("/home")
    public String homePage(Model model)
    {
        model.addAttribute("data",someObject);
        return "home"; //this will render the view home.jsp
    }

    @RequestMapping(value="/users", method=RequestMethod.POST)
    @ResponseBody
    public User saveUser(@RequestBody User user)
    {
        //persist user
        return user; //this will return JSON/XML based representation of User object
    }   

}

观察 @RequestBody@ResponseBody REST 样式处理程序方法注释的使用。