1

Spring 3 MVC に基づく REST API に取り組んでいます。各呼び出しで、「説明」と「結果」という 2 つの変数を JSON 応答に追加しています。例えば:

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

これらのステータスは 1 回しか使用しませんが、DESC_ACCESS_DENIED は 1 つの REST コントローラーで最大 10 回使用します。

4

2 に答える 2

0

はい、それは理にかなっています。それは良い練習です。この値を変更する必要がある場合でも、時間と労力を節約できます。メモリ使用量や処理時間の点ではそれほど重要ではありませんが、より優れています。

これらの文字列を複数回使用する場合は、static 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);
    }

@ResponseBody アノテーションは List を JSON オブジェクトに変換し、そのための HTTP GET の応答は次のようになります。

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

これは JSON 応答です。

于 2013-07-11T15:59:22.157 に答える
0

get は json を返さず、ビューを返します。

static final int の代わりに enum を使用することを好みます。後で機能を追加するのが簡単です。

于 2013-07-11T13:13:45.100 に答える