코딩마을방범대

실무에서 쓰이는 어노테이션 및 메소드 본문

💡 백엔드/Java

실무에서 쓰이는 어노테이션 및 메소드

신짱구 5세 2023. 5. 31. 15:21
728x90

 

컨트롤러 HTTP API들의 메소드

 

consumes

클라이언트가 요청을 할 때 Content-Type 헤더 값이 일치해야 요청을 처리함

 

ex) consumes = MediaType.APPLICATION_JSON_VALUE:

          content-type값이 "application/json"일 때만 요청을 처리

@PostMapping(value = "", consumes = MediaType.APPLICATION_JSON_VALUE)

매치 되는 않는 경우엔 415 : Unsupported Media Type(지원되지 않는 미디어타입 형식이다) 응답

 

 

produces

클라이언트의 요청에 대한 응답 시 return할 데이터 타입을 명시

클라이언트가 요청을 할 때 accept 헤더의 값이 일치할 때만 요청을 처리

 

ex) produces = MediaType.APPLICATION_JSON_VALUE:

          accept:"application/json" 이면 서버는 JSON형태로 리턴해야 함

          accept 설정을 안해줬을 경우 return 타입이 상관 없다는 의미

@GetMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE)

 

 


 

 

PathVariable 의 정규표현식

아래의 경우 주소에 숫자를 넘겨줄 경우 number 메소드를 호출하게 되고,

문자열을 넘겨줄 경우 string 메소드를 호출하게됨.

@GetMapping("/user/{num:\\d+}")
public void number(@PathVariable Long num) {
}

@GetMapping("/user/{str:\\D+}")
public void string(@PathVariable String str) {
}

 

 

 

 


 

Bean 객체

 

@Lazy

스프링에서 바로 bean을 등록하는 것이 아닌 실제로 사용할 때 로딩이 이뤄지도록 하는 방법

 

 

 

 

객체의 필드 어노테이션

 

@Builder.Default

필드를 초기화 시킬 수 있음

@Builder.Default
private String name = "dbkim";

 

 

@ToString.Exclude

객체 toString() 시 해당 필드는 숨겨서 출력

@ToString.Exclude
private String pw;

 

 

 

 


 

 

 

DTO에 사용하는 JSON 어노테이션

 

@JsonInclude(JsonInclude.Include.NON_NULL)

null인 필드는 Json 데이터 출력 시 포함되지 않음

@JsonInclude(JsonInclude.Include.NON_NULL)
public class ApiDTO<T> {

 

 

 

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)

해당 필드는 오직 쓰려는 경우(deserialize)에만 접근이 허용됨

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private String password;
설명
AUTO 자동
READ_ONLY 쓰기가 불가능하고 읽기만 가능
WRITE_ONLY 읽기가 불가능하고 쓰기만 가능
READ_WRITE 읽기 & 쓰기 둘 다 가능

 

 

 

 

728x90