2013-07-11 57 views
1

我正在使用基於Spring 3 MVC的REST API。在每次調用中,我將添加到JSON響應兩個變量:'description'和'result'。 例如:對Spring 3 REST控制器中使用'private static final'字符串的性能的影響

@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; 
} 

它使對應用程序的性能感營造private static 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次。

回答

0

你得到的不是返回json,它返回一個視圖。

我更喜歡使用枚舉而不是靜態final int - 稍後更容易添加功能。

+0

一個視圖也可以是'JSON' ... – zeroflagL

+0

@zeroflagL嗯,不是它不能 – NimChimpsky

+0

是的,它可以。請參閱OP對其他答案的評論。此外,你甚至可以使用'<%@ page contentType =「application/json」pageEncoding =「UTF-8」%>'來發送'JSON'。 – zeroflagL

0

是的,它確實有道理。這是一個很好的實踐。如果您需要更改此值,它可以節省您的時間和精力。這在內存使用或處理時間方面非常不重要,但它更好。

如果您打算多次使用這些字符串,那麼轉化爲靜態最終是一個很好的實踐。但請注意您的方法沒有返回JSON響應。 JSON響應是類似的東西:

的註解@ResponseBody將改造成列表JSON對象,以及HTTP GET爲的反應是類似的東西:

[{"codigo":9701,"uf":{"uf":"DF","nome":"DISTRITO FEDERAL"},"nome":"BRASILIA          "}] 

這是一個JSON響應。

+0

我正在使用spring的一個視圖: Dmytro

+0

「是」 - 爲什麼?一些解釋會很好。 – zeroflagL

+0

增加了一些更多的原因 – renanlf