Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- storage #로컬스토리지 #세션스토리지 #백그라운드 서비스
- tar #build #배포 #통신포트 #설정방법 #linux #apache
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- aws #아키텍트 #과정 #s3 #bucket #생성 #이미지업로드
- aws #아키텍트 #과정 #vpc #인프라 구축
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #internet gateway #연결
- haproxy #wordpree #php #linux #가상화 #가상머신 #내용정리
- 비트 #바이트 #이진수
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- virtualbox #vmware #router #nat #pat #네트워크 구성도 #aws #ubuntu #
- aws #아키텍트 #과정 #vpc #인프라 구축 #퍼블릭 서브넷 #안에 #ec2 인스턴스 #ami #생성 #firewall
- aws #클라우드 #퍼블릭 클라우드 #아키텍트 #과정
- oracle vmbox #rocky #linux9 #명령어 #암호화인증 #해시알고리즘
- ubuntu #설정변경 #vmware #vmbox #linux #명령어
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- 프로세스 #CPU #시공유 #커널
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- mysql #linux #설정 #wordpress #웹사이트 #db 연결 #
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #igw #curl #명령어 #http
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #route53 #igw #연결
- aws #아키텍트 #과정 #vpc #인프라 구축 #퍼블릭 #보안그룹 #생성 #http #ipv4
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- 인바운드 #아웃바운드 #방화벽설정
- samba #가상머신 #daemon
- 쓰레드 #쓰레드풀 #프로세스
- sasac #aws 클라우드 #아키텍트 과정 #가상화 #vmbox #vmware #esxi #tar #selinux
- aws #아키텍트 #과정 #vpc #인프라 구축 #public subnet #private subnet
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #웹페이지 #http #public #instance
Archives
- Today
- Total
요리사에서 IT개발자로
스파르타 부트캠프 SpringBoot @Validation란 본문
Validation
올바르지 않은 데이터를 걸러내고 보안을 유지하기 위해
데이터검증 (validation)은 여러 계층에 걸쳐서 적용된다.
Client의 데이터는 조작이 쉽고
모든 데이터가 정상적인 방식으로 들어오는 것도 아니기에
Client Side 뿐만 아니라
Server Side 에서도
데이터 유효성을 검사 해야 할 필요가 있는데
Spring Boot 프로젝트에서 @validated를 이용해서 유효성을 검증할 수 있다.
스프링의 기본적인 validation인 Bean Validation은
클래스 "필드"에 특정 어노테이션을 적용시키고
필드가 갖는 제약 조건을 정의하는 구조로 이루어진 검사이다.
validator가 비즈니스적 로직에 대한 검증이 아닌,
그 클래스로
생성된 객체 자체의 필드에 대한 유효성 여부를 검증한다.
@Valid, @Validated차이
@Valid는
Java에서 지원해주는 어노테이션
@Validated는
Spring에서 지원해주는 어노테이션
@Validated는
@Valid 기능을 포함하고
유효성을 검토할 그룹을 지정할 수 있는 기능을 추가로 갖고있다.
Spring Boot 2.3 이후 부터는
validation 의존성을 따로 추가해줘야한다.
implementation 'org.springframework.boot:spring-boot-starter-validation'
Controller에서 유효성 검사를 적용할 API의 Request 객체 앞에
@Validated 어노테이션을 가해준다.
@PostMapping("/todos")
public TodoResponseDto createTodo(@Validated @RequestBody TodoRequestDto todoRequestDto) {
return todoService.createTodo(todoRequestDto);
}
TodoRequestDto를 핸들링할 객체을 정의할 때
Validation 어노테이션을 통해서필요한 유효성 검사를 적용한다.
@Getter
@NoArgsConstructor
public class TodoRequestDto {
@NotBlank(message = "제목이 입력되지 않았습니다.")
private String title;
@NotBlank(message = "내용이 입력되지 않았습니다.")
private String content;
@NotBlank(message = "작성자가 입력되지 않았습니다.")
private String writer;
@NotBlank(message = "비밀번호가 입력되지 않았습니다.")
private String password;
유효성 검사에 적용할 수 있는 에너테이션
@Null // null만 혀용합니다.
@NotNull // null을 허용하지 않습니다. "", " "는 허용합니다.
@NotEmpty // null, ""을 허용하지 않습니다. " "는 허용합니다.
@NotBlank // null, "", " " 모두 허용하지 않습니다.
@Email // 이메일 형식을 검사합니다. 다만 ""의 경우를 통과 시킵니다
@Pattern(regexp = ) // 정규식을 검사할 때 사용됩니다.
@Size(min=, max=) // 길이를 제한할 때 사용됩니다.
@Max(value = ) // value 이하의 값을 받을 때 사용됩니다.
@Min(value = ) // value 이상의 값을 받을 때 사용됩니다.
@Positive // 값을 양수로 제한합니다.
@PositiveOrZero // 값을 양수와 0만 가능하도록 제한합니다.
@Negative // 값을 음수로 제한합니다.
@NegativeOrZero // 값을 음수와 0만 가능하도록 제한합니다.
@Future // 현재보다 미래
@Past // 현재보다 과거
@AssertFalse // false 여부, null은 체크하지 않습니다.
@AssertTrue // true 여부, null은 체크하지 않습니다.
Exception Handling
위에서 적용한 것 처럼
에러를 처리하는 객체를 따로 생성하여
가공하는 것 외에
@ExceptionHandler 어노테이션을 이용해서 예외처리도 가능하다.
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ExceptionHandler(IllegalArgumentException.class)
public String exception (Exception e){
return e.getMessage();
}
참고
https://hyeran-story.tistory.com/81
반응형
'Spring' 카테고리의 다른 글
Spring Security JWT 인증 방식과 Security 동작원리 (0) | 2024.06.05 |
---|---|
스파르타 부트캠프 SpringBoot JWT인증, 인가 (0) | 2024.06.05 |
스파르타 부트캠프 Spring Master 3강 고아Entity 삭제(orphanRemoval) (0) | 2024.05.29 |
스파르타 부트캠프 Spring Master 3강 영속성 전이 (0) | 2024.05.29 |
스파르타 부트캠프 Spring Master 3강 지연로딩과 즉시로딩 (0) | 2024.05.29 |