<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-validation -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<version>2.4.4</version>
</dependency>
위 maven은 2.4.4 버전이다.
porm.xml에 의존성 추가.
validation 체크 관련 어노테이션은 해당 블로그가 굉장히 잘 돼있습니다.
참고하시면 좋을 것 같아요!.
https://bamdule.tistory.com/35
DB 스키마 밸리데이션 체크
javax.persistence 가 들고 있는 기능
으로 구성
@Column이 다 들고 있다. DB 스키마를 구성할 때 밸리데이션 체크를 하는 것이다.
벨리데이션 체크(자세한 설명은 위 블로그에 잘 나와있습니다!.(감사합니다)
벨리데이션 체크 사용
그럼 위와 같이 밸리데이션 체크를 해서 오류가 난다면 핵심 로직이 실행되지 않고 분기를 시켜야 한다.
ResponseBody가 있기 때문에 파일이 아닌 데이터를 리턴한다.
@ResponseBody는 @controller에서 데이터를 응답하도록 한다.
해당 메서드는 데이터를 응답하기 때문에 파일을 리턴할 수 없다.
그래서 컨트롤 어드바이스를 만들어서 처리해야 한다
@ControllerAdvice
위 코드에서의 문제점은 위 코드에서 getFiledErrors는 컬렉션 타입이라서 처리를 할 수 없다
그래서 exception을 커스텀 했습니다.
벨리데이션 체크 후 분기하고 정상적인 요청일 때 파일 리턴하도록 코드 설계
@ResponseBody를 사용해서 데이터를 리턴하는 메서드로 설계하는 것이 아니라 파일을 리턴하는 메서드로 하고 return대신에 Exception을 날려서 분기를 하도록 하면 위 문제가 해결된다.
'Springboot' 카테고리의 다른 글
현재 진행 중인 프로젝트에서 구독하기 API구현하기 (1)연관관계/모델만들기 (0) | 2021.12.17 |
---|---|
Springboot/현제프로젝트에서 Optional처리하기 (0) | 2021.12.16 |
전처리 후처리 개념 (AOP) (0) | 2021.12.11 |
Springboot/현재 진행 중인 프로젝트에서 build패턴 사용, @Service/@Transactional/@Bean 사용법 (0) | 2021.12.11 |
CSRF토큰 (0) | 2021.12.11 |