개발자 일지/TIL

스파르타 내일배움캠프 44일차 231117 / Validation

이건버그야 2023. 11. 21. 00:56

오늘 공부한 내용

  • Spring 숙련주차 2주차 시청 
  • 숙련주차 2주차 과제수행

 

어려웠던 내용

  • 숙련주차 2주차 과제 수행

어노테이션 적용후 Dto 연결이 어렵다.

새로 알게된점

1. Validation

Validation 이란 어떤 데이터 (주로 사용자 또는 다른 서버의 request)의 값이 유효한지, 잘못된 내용이 있는지 확인하는 단계를 뜻합니다. 예를들어 이메일 주소의 양식은 "email@email.com"의 양식어어야 하는데, 이 양식과 일치하지 않는 값이 들어온다면 해당 값의 저장을 막을 수 있습니다.

 

  • Java Bean Validation

스프링 부트에서는 gradle에 의존성 하나만 추가해주면 간단하게 사용할 수 있습니다.

implementation("org.springframework.boot:spring-boot-starter-validation")

JavaBean 기반으로 간편하게 개별 데이터를 검증할 수 있으며, JavaBean내에 어노테이션으로 검증방법을 명시하면 됩니다. 

Validation의 주요 어노테이션

  • Validation 예외처리

회원가입 진행 시 데이터 검증 시 오류가 발생했을 때 로그인 페이지가 아니라 회원가입 페이지로 이동 하려면 Validation 예외를 처리해야합니다.

예시로 SignupRequestDto에 들어있는 내용에 제한을 가져 보자

기존에 적혀 있는 SignupRequestDto 내용이다.

@Getter
@Setter
public class SignupRequestDto {
    private String username;
    private String password;
    private String email;
    private boolean admin = false;
    private String adminToken = "";
}

 

 

여기서 각각의 내용에 제한을 걸려면 위에 어노테이션을 이용하여 적어준다.

@Getter
@Setter
public class SignupRequestDto {
    @NotBlank(message = "공백X") //빈값 + 공백만 있는 경우를 허용하지 않는다.
    private String username;
    
    @Pattern(regexp = "^[a-zA-Z0-9]") // 소문자 a에서 z까지, 대문자 A에서 Z까지, 0~9의 순자만 사용할수있다.
    private String password;
    
    @Pattern(regexp = "^[a-zA-Z0-9_!#$%&'*+/=?`{|}~^.-]+@[a-zA-Z0-9.-]+$") 
    // 위와 동일하게 적용되며 특수문자(!#$%&'*+/=?`{|}~^.-)도 사용할수있다.
    @NotBlank
    @NotNull //null을 허용하지 않는다.
    private String email;
    private boolean admin = false;
    private String adminToken = "";
}

 

 

오늘의 느낀점

오늘 부터 실질적인 과제작성에 들어갔다. 다만 막상 시작하려고 하니 어디서부터 건드려야 할지 모르겠고 진도가 안나가서 결국 영상을 다시 보게 된다.

회원가입 기능, 할일 카드, 댓글 구현 총 3가지의 기능을 주축으로 만들어야 하는데 메모할때 와 다르게 막상 만들려고 하니 어떻게 응용해야 할지를 모르겠다.

영상을 보면서 모르는 부분도 많지만 그래도 어느부분부분은 하나하나 익힐수 있는 구조가 되어서 도움이 된다만 기초공부를 다시 해야 할거 같다.