• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

@JsonIgnore 어노테이션 적용이 안됩니다..

22.11.03 13:32 작성 조회수 345

0

질문처럼 강의에서나온 @JsonIgnore 어노테이션 적용이 되지않고 PostMan 에서 그대로 필드가 노출되는 현상입니다.

왜 적용이 안되는지 알수 있을까요 서버도 재기동 한 상태입니다.

 

 

답변 1

답변을 작성해보세요.

0

안녕하세요, 이도원입니다.

https://www.inflearn.com/questions/685212

위 질문에 올려주셨던 코드로 설명을 드립니다.

@JsonIgnore로 필드를 제어할 실때는 Controller에서 MappingJacksonValue로 반환하지 않고 원래의 User 객체로 반환하시면 됩니다. 아래 코드 참고해서 실행해 보시기 바랍니다. 올려주신 코드의 User클래스를 TestUser 클래스로 변경하여 사용하였습니다.

@Data //lombok 사용으로 생성자,setter,getter 자동으로 생성됨
@AllArgsConstructor
//@JsonIgnoreProperties(value={"password","ssn"}) //숨길 데이터를 제어하기 위한 어노테이션
//@JsonFilter("UserInfoV1") //Userinfo 라는 정보는 controler , service 에서 사용 가능하게됨
@NoArgsConstructor //디폴트생성자 생성
public class TestUser {
    private Integer id;
    @Size(min =2, message = "Name은 2글자 이상 입력해 주세요.")
    private String name;
    @Past
    private Date joinDate;

    @JsonIgnore
    private String password;
    @JsonIgnore
    private String ssn;
}
@GetMapping(value ="/users/{id}",produces = "application/vnd.company.appv3+json")//mimetime을 이용하는 방법
public TestUser retrieveUserV3(@PathVariable int id){ //int로 자동으로 변환됨
    User user = service.findOne(id);

    if (user == null){
        throw new UserNotFoundException(String.format("ID[%s] not found",id));
    }

    TestUser testUser = new TestUser();
    BeanUtils.copyProperties(user, testUser);

    return testUser;
}

 

image

감사합니다.