Spring 어노테이션 정리

클래스 레벨 어노테이션

@RestController

HTTP 응답 본문을 직렬화하여 반환하므로, RESTful API를 제공하는 컨트롤러 클래스에 지정하면 좋습니다.
일반 @Controller와 달리 내부적으로 모든 method에 @ResponseBody가 붙게 됩니다.

@Component

Bean을 따로 등록하지 않아도 클래스 자체를 스프링 Bean으로 자동 등록합니다.


컨트롤러 매핑 어노테이션

@RequestMapping

@RequestMapping(value="/", method = RequestMethod.GET)
@RequestMapping(value="/", method = RequestMethod.POST)
@RequestMapping(value="/", method = {RequestMethod.GET, RequestMethod.POST})

Post 및 Get 방식 요청을 받을 수 있습니다.

@PostMapping

@PostMapping("/")

Post 요청을 받을 수 있습니다.

@GetMapping

@GetMapping("/")

Get 요청을 받을 수 있습니다.

URL로 ID 파라미터 받는 방법

@GetMapping("/update/{id}")
public String getUpdatePage(@PathVariable Integer id, @RequestParam Map<String,Object> params) throws Exception {

    log.info("아이디 : " + id);

    return "content/update";
}

수정 화면 진입 시, 수정할 ID를 파라미터로 받는 예시입니다.


파라미터 어노테이션

@RequestBody

@RequestBody 클래스명 변수

클라이언트가 전송한 JSON 데이터를 Java 객체로 자동 변환합니다.

@RequestParam

@RequestParam("파라미터명") String 변수명

Get 방식으로 받은 파라미터 또는 form input name을 변수에 1:1로 매핑합니다.
HttpServletRequest 객체를 통해 req.getParameter(“파라미터명”) 으로 받는 것과 같습니다.

필수 파라미터 미전달 시 에러

Required request parameter '파라미터명' for method parameter type String is not present

파라미터가 없이 들어와서 요청 자체가 실행되지 않아 try catch 문에서 의도하지 않은 기본 에러 페이지로 이동되는 경우, 아래와 같이 필수 파라미터 지정을 해제하면 됩니다.

필수 파라미터 해제

@RequestParam(value = "파라미터명", required = false)

@ModelAttribute

@ModelAttribute("VO클래스명") VO클래스명 변수명

받은 파라미터 또는 form input name과 같은 이름의 VO 클래스 변수에 모두 자동 매핑합니다.


리턴 어노테이션

@ResponseBody

@ResponseBody
@RequestMapping(value = "/cmmn/faq/selectList.do")
public ModelAndView selectList(HttpServletRequest req, HttpServletResponse res, @ModelAttribute("IMFaqVO") IMFaqVO iMFaqVO) throws Exception {
	ModelAndView mav = new ModelAndView();
	
	mav.addObject("faqList", faqService.selectList(iMFaqVO));

	mav.setViewName("jsonView");
	
	return mav;
}

return하는 java 객체를 json 형태로 변환하여 jsonView로 전달합니다.
return 값이 jsp 페이지명 String이 아닌 경우, @ResponseBody를 쓰지 않으면 URL 404 에러가 발생합니다.

Leave a comment