Spring

@NoArgsConstructor(access = AccessLevel.PROTECTED)

challnum 2023. 1. 26. 23:18

Member

@Entity
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class Member extends Timestamped implements UserDetails {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

Service

public ResponseEntity<String> findOverlapUsername(String username) {
    Member member = memberRepository.findByUsername(username).orElse(new Member());
    if (username.equals(member.getUsername())) {
        return new ResponseEntity<>(ResponseMessage.READ_FIND_USERNAME, HttpStatus.valueOf(StatusCode.OK));
    }
    return new ResponseEntity<>(HttpStatus.valueOf(StatusCode.OK));
}

에러 화면

  • 에러의 경우 MemberRepository에서 Member를 찾지 못했을 경우 생성자를 생성하는 것이었지만 @NoArgsConstructor(access = AccessLevel.PROTECTED)로 최고 레벨의 보안을 적어두었기에 생성자가 생기는 것을 방지할 수 있다.