본문 바로가기

👩‍💻 BackEnd/🍃 스프링부트 [SpringBoot]

[SpringBoot] @JsonProperty(access = Access.WRITE_ONLY)

부트 캠프를 진행하면서 배웠던 책을 과정 수료 후 집에서 궁금한 부분부터 읽어보고 있는 중인데 

 

@JsonProperty(access = Access.WRITE_ONLY)
@Column(nullable = false)
private String password;

 

이 어노테이션을 처음 본 것 마냥 신기해하는 나의 모습. 공부를 열심히 해야겠다.

 

이 어노테이션은 보안상 관리가 필요한 필드에 사용하는 것이 좋은데, 

예를들면 User 엔티티에서 password 필드에 사용한 예시를 발견했다. 

 

이 어노테이션의 의미는 

직렬화 시에는 값을 출력하지 않고 , 역직렬화 시에만 출력을 하도록 설정하는 것이다. 

 

* 직렬화 : 객체를 Json으로 변환 

* 역직렬화 : Json을 객체로 변환 

 

따라서, 사용자가 비밀번호를 저장하는 경우에는 비밀번호가 json 으로 출력되지 않고, 인증을 확인하기 위해서는 비밀번호를 역직렬화(json을 객체로) 해서 사용가능 (json 에서 값을 읽어와서 값을 객체의 필드에 할당)