목차
1. Validation
2. Data Binding
3. Spring Resource
4. SpEL
5. Null Safety
6. Lombok library
7. HTTP 스펙 기초
Validation이란?
유효성 검증
주로 사용자 또는 서버의 요청 내용에서 잘못된 내용이 있는지 확인하는 단계를 뜻함
Validation의 종류
학문적으로 여러 세부적인 단계들이 있기도 하지만 실제로 개발자가 주로 챙겨야 하는 검증은 크게 두 종류로 나뉜다.
- 데이터 검증
- 비즈니스 검증
필수 데이터의 존재 유무
문자열의 길이나 숫자형 데이터의 경우 값의 범위
email, 신용카드 번호 등 특정 형식에 맞춘 데이터
서미스에 정책에 따라 데이터를 확인하여 검증
예) 배달앱인 경우 배달 요청을 할 때 해당 주문건이 결제 완료 상태인지 확인 등
경우에 따라 외부 API를 호출하거나 DB의 데이터까지 조회하여 검증하는 경우도 존재
Java Bean Validation
JavaBean 기반으로 간편하게 개별 데이터를 검증
요즘에 가장 많이 활용되는 방법 중 하나.요청 dto에 annotation으로 명시 후
@Valid
annotation을 해당@RequestBody
에 달게 되면, Java Bean Validation을 수행한 후 문제가 없을 때만 메서드 내부로 진입이 된다.
검증 중 실패가 발생하면MethodArgumentNotValidException
발생
Spring validator 인터페이스 구현을 통한 validation
Converter
T convert(S source)
S(source)라는 타입을 받아서 T(Target)이라는 타입으로 변환해주는 interface
Spring Bean으로 등록하면 자동으로 ConversionService에 등록시켜 주기 때문에 필요에 따라 자동으로 동작하게 된다.
Formatter
특정 객체와 String 간의 변환을 담당하는 interface
Spring Bean으로 등록하면 자동으로 ConversionService에 등록시켜 주기 때문에 필요에 따라 자동으로 동작하게 된다.
java.net.URL을 래핑한 버전, 다양한 종류의 Resource에 접근가능하지만 기본적으로는 http(s)로 원격 접근
classpath 하위의 리소스 접근 시 사용
이름과 같이 File을 다루기 위한 리소스 구현체
Servlet 어플리케이션 루트 하위 파일, InputStream, ByteArrayInput 스트림을 가져오기 위한 구현체
주로
@Value("${config.value}")
와 같은 방식으로 설정값을 주입받는 데에 사용
@NonNull
Annotation@Nullable
Annotation@NonNull
과 반대로 해당 데이터가 null일 수 있음을 명시함@Builder
: @Setter
와 비슷한 기능이다.
dto.builder().fieldName($$).fieldName2(&&).build();
의 형식으로 사용한다.코드의 응집력을 위해 사용한다.
@Slf4j
: logging을 위해 사용한다.
@UtilityClass
: 다양한 메서드들을 지원해주는 Utility Class를 만들 때 사용한다.
해당 클래스를 final 클래스로 만든다.
해당 클래스를 더 이상 상속받지 못하도록 만든다.
생성자를 private로 만든다.