Performance 使用'对性能的影响;私人静态最终版';Spring3REST控制器中的字符串
我正在开发基于Spring3MVC的RESTAPI。在每次调用中,我都向JSON响应添加两个变量:“description”和“result”。 例如:Performance 使用'对性能的影响;私人静态最终版';Spring3REST控制器中的字符串,performance,rest,spring-mvc,Performance,Rest,Spring Mvc,我正在开发基于Spring3MVC的RESTAPI。在每次调用中,我都向JSON响应添加两个变量:“description”和“result”。 例如: @RequestMapping(value = "entity.htm", method = RequestMethod.GET) public ModelAndView get() { ModelAndView mav = new ModelAndView(JSON_VIEW); mav.addObject("descript
@RequestMapping(value = "entity.htm", method = RequestMethod.GET)
public ModelAndView get() {
ModelAndView mav = new ModelAndView(JSON_VIEW);
mav.addObject("description", "entity list");
mav.addObject("result", someService.getAll());
return mav;
}
创建一个私有静态final
字符串池,并在每次需要时使用它们,对应用程序的性能有意义吗?
我的意思是:
@Controller
public class MyController {
private static final String JSON_VIEW = "jsonView";
private static final String VAR_DESCRIPTION = "description";
private static final String VAR_RESULT = "result";
private static final String DESC_CREATED = "entity created";
private static final String DESC_ENTITY_LIST = "entity list";
private static final String DESC_ACCESS_DENIED = "forbidden";
@RequestMapping(value = "entity.htm", method = RequestMethod.PUT)
public ModelAndView put(HttpServletResponse response) {
ModelAndView mav = new ModelAndView(JSON_VIEW);
if (!entityService.someChecking()) {
mav.addObject(VAR_DESCRIPTION, DESC_ACCESS_DENIED);
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
} else {
mav.addObject(VAR_DESCRIPTION, DESC_CREATED);
mav.addObject(VAR_RESULT, entityService.save(new Entity()));
response.setStatus(HttpServletResponse.SC_CREATED);
}
return mav;
}
@RequestMapping(value = "entity.htm", method = RequestMethod.GET)
public ModelAndView get(HttpServletResponse response) {
ModelAndView mav = new ModelAndView(JSON_VIEW);
if (!entityService.someChecking()) {
mav.addObject(VAR_DESCRIPTION, DESC_ACCESS_DENIED);
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
} else {
mav.addObject(VAR_DESCRIPTION, DESC_ENTITY_LIST);
mav.addObject(VAR_RESULT, entityService.getAll());
}
return mav;
}
// and so on
}
这些状态中的某个人我只使用了一次,但DESC_ACCESS_DENIED我在一个REST控制器中使用了多达10次。您的get没有返回json,它返回一个视图
我更喜欢使用枚举而不是静态最终整数-更容易在以后添加功能 是的,这是有道理的。这是一个很好的练习。如果需要更改此值,可以节省您的时间和精力。就内存使用或处理时间而言,这并不重要,但更好 如果您打算不止一次地使用这些字符串,那么将其转换为静态final是一个很好的做法。但是请注意,您的方法没有返回JSON响应。JSON响应类似于:
@RequestMapping(value = "/porUF", method = RequestMethod.GET)
public @ResponseBody List<Municipio> municipios(
@RequestParam(value = "uf", required = true) String uf) {
if ( uf.length() != 2) {
return null;
}
return municipioBO.findByUf(uf);
}
这是一个JSON响应。我使用的是spring的一个视图:“是”-为什么?一些解释就可以了。是的,可以。参见OP对另一个答案的评论。此外,您甚至可以使用
@zeroplagl使用jsp发送JSON
。所讨论的代码声明该方法返回modelandview。Json是Json,Json中没有表示逻辑。另一个原因没有意义,它定义了一个名为jsonView的bean,类型为jacksonmapper,jacksonmapper只是将pojo转换为json。客户端得到一个json
响应。这是唯一重要的事情。
[{"codigo":9701,"uf":{"uf":"DF","nome":"DISTRITO FEDERAL"},"nome":"BRASILIA "}]