【发布时间】:2016-10-14 19:08:05
【问题描述】:
我正在编写我的第一个 Spring 应用程序,并希望获得经验以在 Spring 上编写最佳且有吸引力的代码。 我有一些 restcontrollers 有很大一部分类似的代码
@RequestMapping(path = "/1154",
method = RequestMethod.POST,
headers = {"Content-Type=application/json"},
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public CreateUserResp processRequest(@RequestBody @Valid CreateUserReq request, BindingResult bindingResult) {
CreateUserResp response = new CreateUserResp();
if (bindingResult.hasErrors()){
response.setResultCode(102); // Validation error
response.setErrMsg("Wrong " + bindingResult.getFieldError().getDefaultMessage() + " value.");
} else {
// main service
request = UserService.doSomething();
}
return response;
}
@RequestMapping(path = "/1155",
method = RequestMethod.POST,
headers = {"Content-Type=application/json"},
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ChangeUserResp processRequest(@RequestBody @Valid ChangeUserReq request, BindingResult bindingResult) {
ChangeUserResp response = new ChangeUserResp();
if (bindingResult.hasErrors()){
response.setResultCode(102); // Validation error
response.setErrMsg("Wrong " + bindingResult.getFieldError().getDefaultMessage() + " value.");
} else {
// main service
request = ChangeService.doSomething();
}
return response;
}
@RequestMapping(path = "/1156",
method = RequestMethod.POST,
headers = {"Content-Type=application/json"},
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public AddUserResp processRequest(@RequestBody @Valid AddUserReq request, BindingResult bindingResult) {
AddUserResp response = new AddUserResp();
if (bindingResult.hasErrors()){
response.setResultCode(102); // Validation error
response.setErrMsg("Wrong " + bindingResult.getFieldError().getDefaultMessage() + " value.");
} else {
// main service
request = AddService.doSomething();
}
return response;
}
@RequestMapping(path = "/1157",
method = RequestMethod.POST,
headers = {"Content-Type=application/json"},
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ModifyUserResp processRequest(@RequestBody @Valid ModifyUserReq request, BindingResult bindingResult) {
ModifyUserResp response = new ModifyUserResp();
if (bindingResult.hasErrors()){
response.setResultCode(102); // Validation error
response.setErrMsg("Wrong " + bindingResult.getFieldError().getDefaultMessage() + " value.");
} else {
// main service
request = ModifyService.doSomething();
}
return response;
}
等等……
(路径、@RequestBody 和 Responce 对象以及称为 service 的唯一区别)。所以,我将有 10-12 个这样的控制器。是否可以使此代码更优化而不是编写此可重复的代码块 10 次(弹簧方法或可能使用泛型类或方法)。这只是示例,不是真正的代码。谢谢
特别感谢那些忙于回答但有时间减号的人。
【问题讨论】:
-
一个观察者来处理你所有请求方法的错误?
-
是的,只是结构相同,我只更改传入 json 对象的 pojo 对象以进行验证。传入请求取决于控制器路径。响应取决于请求对象
-
把所有常用的东西放在类上(对于
@RequestMapping)只定义方法@RequestMapping的差异。除此之外,这些方法是不同的,看起来像 sme 的东西并不能使它们相同。如果您可以在这个级别上泛化事物,那么您就做错了恕我直言...
标签: java spring spring-mvc