在深入细节之前,我知道在Stackoverflow上有很多对话和相关的问题。 所有这些都以不同的方式帮助我,所以我想我把所有的发现放在一起作为一个有组织的常见问题总结我的发现。 相关的概念 当然,你知道这些,但我只是写他们作为一个快速审查。 随时编辑,以防万一我失去了一些东西。 HTTP POST请求: 当您愿意将对象发送到Web服务或您的服务器端应用程序时,会使用发布请求。 连载: 是从您的Web浏览器到您的服务器端应用程序的对象的过程。 可以使用jQuery Ajax调用或Curl post请求。 序列化协议: 这些日子里最stream行的是JSON和XML。 由于XML标签的性质,XML由于序列化的XML对象的规模相对较大而变得越来越stream行。 在这个FAQ中,主要关注的是JSON2序列化。 弹簧: Spring框架及其强大的注释使得以有效的方式公开Web服务成为可能。 Spring中有很多不同的库。 这里我们关注的是Spring web MVC 。 curl与JQuery: 这些是您可以用来在您的客户端进行发布请求的工具。 即使您打算使用JQuery ajax调用,我build议您使用Curl进行debugging,因为它在发出请求后提供了详细的响应。 @RequestBody与@ RequestParam / @ PathVariable与@ModelAttribute: 如果您的Web服务不依赖于Java EE模型,则必须使用@RequestBody。 如果使用模型并将JSON对象添加到模型中,则可以通过@ModelAttribute访问该对象。 只有在您的请求是GET请求或GET和POST请求组合的情况下,您将需要使用@ RequestParam / @ PathVariable。 @RequestBody vs @ResposeBody: 正如你从名字中看到的那样简单,如果在服务器端方法处理请求之后发送客户端的响应,则只需要@ResponseBody。 RequestMappingHandlerAdapter vs AnnotationMethodHandlerAdapter: RequestMappingHandlerAdapter是Spring框架的新的映射处理程序,它自Spring 3.1以来取代了AnnotationMethodHandlerAdapter。 如果您现有的configuration仍然在AnnotationMethodHandlerAdapter中,您可能会发现这个post很有用。 在我的文章中提供的configuration将给你一个关于如何设置RequestMappingHandlerAdapter的想法。 build立 您将需要设置一个消息转换器。 这就是你的序列化的JSON消息正文在服务器端转换成本地java对象的方式。 […]
首先,我可能会问一些以前曾被问及过的问题,但是我却找不到search结果。 一般来说(或总是:))我们定义了服务层上的事务性注释,通常是春季冬眠 Controller-> Manager-> Dao-> Orm。 我现在有一种情况,我需要在基于客户端站点的域模型之间进行select。 假设客户A正在使用我的域名模式,但是其他客户端网站会给我一个networking服务,而不是使用我们的域名模式。 我应该更换哪一层。 我相信它必须是Dao,它将从Web服务获取数据并将其发送回去。两个分别写入的Dao层并根据场景插入。 现在我已经意识到,当我们把@Transactional放在服务层时,我们一直在做紧耦合(如果有这样的事情或者说没有松耦合)。 这么多大脑不会是错的,或者他们(我怀疑它)。 所以问题是“哪里应该”@Transactional“放置服务层或DAO? 这是服务层向下,我应该更换。
我正在浏览SpringSource上的一些博客,其中一位博客作者正在使用@Inject ,我想他也可以使用@Autowired 这是一段代码: @Inject private CustomerOrderService customerOrderService; 我不确定@Inject和@Autowired之间的区别,如果有人能解释在什么情况下使用哪个区别以及使用哪个区别,我将不胜感激。