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
- SSAFY
- Spring
- 백준
- DFS
- Union Find
- 그래프
- 완전탐색
- Java
- BFS
- DP
- SWEA
- 코딩테스트실력진단
- 코테
- 싸피
- 자바
- JPA
- 그리디
- JUnit
- 다익스트라
- database
- 유니온파인드
- 코드트리
- 트러블슈팅
- 기본유형
- 코딩테스트
- 알고리즘기본개념
- 부분수열의합2
- 다시보기
- 완탐
- 알고리즘
Archives
- Today
- Total
HwangHub
[Spring] Validation 체크는 Controller의 몫이다. 본문
AOP를 통해서 Validation을 구현하던 중, 해당 코드를 원래 Controller에서 작성하고, 검증하고 있었음을 이해하게 되었다. Dto에 해당 조건들을 걸고 난 뒤에는, Controller에서 Validation을 체크하고, 문제가 없을 경우 Service로 내리는 흐름으로 돌게 되어 있다.
상황을 가정해보자. 아래와 같이 Entity가 정의되어 있다.
@Entity
@Getter
@Table(name = "user_tb")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true, nullable = false, length = 20)
private String username;
@Column(nullable = false, length = 60) // 패스워드 인코딩(BCrypt)
private String password;
@Column(nullable = false, length = 20)
private String email;
@Column(nullable = false, length = 20)
private String fullname;
// ...
}
위처럼 Entity 필드에 @Column 어노테이션을 이용하여 length = 20과 같은 제약 조건을 설정해뒀다면, 이에 맞게 dto에도 해당 조건을 설정해두고 validation 체크를 컨트롤러 레이어에서 요청이 들어왔을 때 올바르게 요청이 들어온 것인지 유효성 검사를 수행해줘야 한다.
만약 이를 수행하지 않으면 DataIntegrityViolationException이 터지게 된다.
이건 DB가 터진 거다. DB는 아무런 문제가 없고, 그냥 명시한대로 테이블의 칼럼 조건을 설정해뒀을 뿐인데, Controller에서 요청값에 대한 Validation 책임을 다하지 않아 아무 문제 없는 DB가 터지게 된 거다. Service에서는 "유효한" 데이터를 가지고 비즈니스를 처리하는 곳이므로, 유효성 검사를 하지 않는다. 이를 감안하여 로직을 구성해야 한다.
출처: 스프링부트 JUnit 테스트 (인프런)
'DEV-STUDY > Spring' 카테고리의 다른 글
[Spring] HTTP Method로 알아본 "멱등성"이야기 (0) | 2023.09.28 |
---|---|
[Spring] 성능 최적화 및 모니터링 도구 (0) | 2023.09.15 |
[Spring] @Bean과 @Configuration, @Component (0) | 2023.07.28 |
[JUnit] 토이 프로젝트 for JUnit practice : Bank App 2 - SecurityConfig (0) | 2023.07.27 |
[Junit] 토이 프로젝트 for JUnit practice : Bank App 1 - 환경 설정 (0) | 2023.07.27 |
Comments