你有很多方法来与Spring集成,但我认为最好的办法是使用RestyGWT Framework
由于您使用HTTP
协议和JSON
格式以便序列化对象,您将不会遇到使用RestyGWT
与Spring Controllers
交流的问题。
您也可以使用您自己的控制器来响应GWT RPC Requests
。您可以使用Spring MVC Request Dispacher
而不是使用GWT Dispatcher
,并将控制器上的URL映射到GWT客户端中的服务。
如果使用RESTY GWT API
,你可以只写你的接口,采用JAX-RS
注解像@POST, @GET, @DELETE, @PathParam
映射方法等
下面是我使用RestyGWT
做我的项目是什么:
项目是组成的2个项目: 项目客户 项目服务器
客户端包含与GWT
和RestyGWT
所有文件。 服务器包含使用Spring
的后端实施中的所有文件。
Maven
覆盖用于合并包编译阶段的2个项目,因此您最终会与GWT * js文件和服务器文件进行最终的争夺。
要使用RestyGWT
你必须创建谁伸出RestService
接口:
public interface MyRestService extends RestService{
@GET
@Path("/foo")
public void getFoo(MethodCallback<List<Foo>);
@POST
@Path("/foo")
public void saveFoo(Foo foo ,MethodCallback<MessageResponse>);
}
要使用这项服务,你写的东西是这样的:
MyRestService service = GWT.create(MyRestService.class);
,你就会有这样的事情使用服务:
service.getFoo(new MethodCallBack<List<Foo>>(){
public void onSucess(List<Foo> foos){
/* You will get foos, you dont have to worry about serialization, RESTYGWT does it for you */
}
public void onError() ...
});
而且哟ü将有一个控制器,以这样的这一要求作出回应:
@Controller
class myController{
@Autowired FooService svc;
@RequestMapping(value = "/foo", method = RequestMethod.GET, produces= "application/json")
public @ResponseBody List<Foo> getAllFoos(){
return svc.all();
}
@RequestMapping(value = "/foo", method = RequestMethod.POST, produces= "application/json", consumes="application/json")
public @ResponseBody MessageResponse save(@ResponseBody Foo foo){
svc.save(foo);
return new MessageResponse("Foo saved with sucess", 200);
}
}