Spring Annotations
@Value
property 설정 파일의 값을 쉽게 주입시켜주는 어노테이션
@JsonProperty
스네이크 케이스로 받은 JSON 데이터를 객체 내 케멀케이스 변수에 매핑시킬 때 사용
@RequestBody
@NoArgsConstructor를 생성해주어야 한다.
JSON 형태로 들어온 Http Message Body를 읽기 위해 사용
생략이 불가능하다. @RequestBody는 생략할 경우 우선 순위인 @ModelAttribute가 적용되어 문자열로 변환된다. 따라서 객체로 바인딩하려면 json 파서를 한 번 더 거쳐야 한다.
@ModelAttribute
HTTP 요청에서 form 형태로 들어온 데이터를 읽기 위해 사용
생략 가능하다.
@RequestParam
생략 가능하다. String이나 int 같은 단순 타입을 사용할 때는 @RequestParam이 붙고, 객체 등을 사용할 때는 @ModelAttribute가 붙는다.
@RequestParam은 query parameter를 받을 때 사용하는 어노테이션이다.
Boxing Type을 사용하는지 아닌지에 따라 발생하는 예외의 종류가 다르다.
아래는 Boolean과 boolean 타입을 사용하는 예시로, 값이 없다면 NULL을 저장할지 false를 저장할지 달라질 수 있다. 따라서 가급적 Boxing Type으로 입력받는 것이 의도치 않은 로직 수행을 방지할 수 있을 것 같다.
RequestParam 옵션 | query parameter null로 선언 (?param1=) | query parameter 선언 X |
---|---|---|
required = true | Boolean - 예외 발생하지 않고 NULL 저장 boolean - MethodArgumentTypeMismatchException | Boolean - Required boolean parameter 'replication' is not present boolean - Required boolean parameter 'replication' is not present |
required = false | Boolean - 예외 발생하지 않고 NULL 저장 boolean - MethodArgumentTypeMismatchException | Boolean - 예외 발생하지 않고 NULL 저장 boolean - 예외 발생하지 않고 false 저장 |
Last updated