json형태로 데이터를 return하는 방법은 내가 아는 범위내에서 2가지다.
(더 있을 수도 있는데... 일단 내가 아는 방법은 2가지.)
첫째, jsonView
둘째, @ResponsBody
이 2가지이다. 예전에 상세히 들어간 건 아니고 대충 검색해보면서
@ResponseBody보다 jsonView를 이용하는게 더 많은 데이터를 처리하는데 좋다고 하는데,
아직까지 차이가 날 정도로 큰 데이터를 다뤄보지 못해서 차이를 잘 모르겠다.
1. jsonView
사실 회사에 오고나서 이미 이렇게 짜여진 코드를 봐와서 난 이게 따로 설정해야하는 줄 몰랐다.
jsonView를 사용하기 위해서는 설정이 필요하다. 몇가지 jar파일을 pom.xml에 선언해주고 설정해주면 된다.
(*설정방법은 조금만 찾아보면 바로 찾을 수 있다.)
보통 난 jsonView를 이렇게 사용한다.
1
2
3
4
5
6
7
8
9
10
|
@RequestMapping(value="/practice/jsonViewTest")
public ModelAndView jsonViewTest(@RequestParam Map<String, Object> params, HttpServletRequest request){
ModelAndView mv = new ModelAndView();
List<Map<String, Object>> result = new ArrayList<HashMap<String, Object>>();
result = testService.selectData(params);
mv.addObject("result", result);
mv.setViewName("jsonView");
return mv;
}
|
cs |
json으로 보내고 싶은 데이터를 조회해오고, ModelAndView.addObject를 이용해 객체를 추가해주고,
ModelAndView.setViewName("jsonView")를 통해 json형태로 return한다.
2. @ResponseBody
어노테이션을 이용하는 방법이다. 스프링이니까 어노테이션을 적절히 사용해주는게 좋으려나?
사용방법은 간단하다. 메서드 위에 @ResponseBody만 선언해주면 되니까.
1
2
3
4
5
6
7
8
|
@RequestMapping(value="/practice/responseBodyTest")
@ResponseBody
public List<Map<String, Object>> responseBodyTest(@RequestParam Map<String, Object> params, HttpServletRequest request){
List<Map<String, Object>> result = new ArrayList<HashMap<String, Object>>();
result = testService.selectData(params);
return result;
}
|
cs |
그때그때 편한 방법을 사용하면 좋을 것 같다.
참고블로그
https://zorba91.tistory.com/17
'Spring Framework' 카테고리의 다른 글
생성자 대신 builder(@builder)패턴을 사용해야 하는 이유 ! (1) | 2024.04.25 |
---|---|
Spring 404 JAVA 설정 예외처리 법 (0) | 2024.04.23 |
23.02.15 redirect, forward 방식의 차이점 (0) | 2023.02.15 |