你有很多方法來與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);
}
}