Dev/Spring Boot Dev/Spring Boot 2022. 7. 17. [Validation] @Past, @FutureOrPresent LocalDateTime 타입 검증 이슈 TimeDto.java @ToString @AllArgsConstructor(access = AccessLevel.PRIVATE) @NoArgsConstructor @Getter @Builder public class TimeDto { // ##### Date ##### @Future private LocalDate futureDate; @FutureOrPresent private LocalDate futureOrPresentDate; @Past private LocalDate pastDate; @PastOrPresent private LocalDate pastOrPresentDate; // ##### Time ##### @Future private LocalDateTime futureTime; @Fut.. Dev/Spring Boot 2022. 7. 17. [Validation] 정규식 여부에 따른 @Email 동작 이슈 목차 1) 상황 @Email 인터페이스에 검증 과정이 없음 @Email 인터페이스의 기본 정규식은 String regexp() default ".*"임. 위 두 조건임에도 테스트 진행 시 ‘@’ 유무 검증이 이루어짐 2) 목표 어디서 어떻게 이메일 검증이 이루어지는 지 찾기 @Email(regexp=) 값을 지정 여부에 대한 동작 흐름 찾기 3) 방법 email 케이스 별 테스트 코드 작성 @Email, @Email(regexp = "^[A-Za-z0-9+_.-]+@naver.com$") email = null email = “” email = journi@naver.com email = journi@gmail.com email = journi#naver.com EmailValidator 동작 흐름 4).. Dev/Spring Boot 2022. 7. 17. [Validation] Bean Validation 을 이용한 검증 Bean Validation 이란? 어노테이션 형태로 Request Body DTO 객체를 쉽게 검증할 수 있게 해주는 표준 검증 사양 사용 방법 라이브러리 implementation 'org.springframework.boot:spring-boot-starter-validation' Dto 단위 필요한 검증 어노테이션 필드에 추가 public class UserNotNull { @NotNull(message = "검증 실패 메세지") private String name; } 컨트롤러 단위 @Validated 또는 @Valid 어노테이션 추가 @PostMapping("") public ResponseEntity test(@RequestBody @Valid UserNotNull userDto) { [lo.. Dev/Spring Boot 2022. 4. 4. [Gradle] finalizedBy 개념 Springboot API 문서도구로 Spring Rest Docs를 이용하면서 build.gradle 설정에서 주의할 점을 finalizedBy 개념과 함께 알아보자. [ 기존 build.gradle ] build { dependsOn copyDocs } task copyDocs { dependsOn asciidoctor from file ("build/asciidoc/html") into file ("src/main/resources/static/docs") } build 를 시작하면, dependsOn 에 의해 copyDocs 부터 실행이 된다. copyDocs는 build 폴더에 있는 Spring Rest Docs snippets 문서를 src/main/resources~ 폴더로 복사하는 작업이다.. Dev/Spring Boot 2022. 3. 22. JUnit4 기반 Spring Rest Docs 작성 방법 1. gradle 세팅 dependencies { // asciidoc asciidoctor("org.springframework.restdocs:spring-restdocs-asciidoctor:2.0.2.RELEASE") testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc:2.0.2.RELEASE") testImplementation("com.jayway.jsonpath:json-path") } ext { // Snippet 의 생성 위치를 지정 snippetsDir = file('build/generated-snippets') } test { outputs.dir snippetsDir filter { includeTest.. Dev/Spring Boot 2022. 2. 17. application.yml 위치 변경하기 application.yml 파일을 main/resources 가 아닌 다른 경로에 두고 어플리케이션 실행하고 싶으면 위에 설정 추가하시면 됩니다. InteliJ Edit configuration [ENVIRONMENT_VARIABLES] 에서 SPRING_CONFIG_LOCATION=절대 경로 Dev/Spring Boot 2022. 2. 13. Maven Spring boot h2 데이터베이스 연결 application.yml server: port: 8080 spring: h2: console: enabled: true path: /h2-console datasource: url: jdbc:h2:~/test username: sa password: 1234 driver-class-name: org.h2.Driver pom.xml org.springframework.boot spring-boot-starter-jdbc com.h2database h2 runtime localhost:8080/h2-console 접속 참고 https://youngjinmo.github.io/2020/03/h2-database/ Dev/Spring Boot 2022. 2. 13. Maven 프로젝트 실행 환경 구성 1. Spring Initializer 로 만든 메이븐 프로젝트를 인텔리제이에서 빌드하고 싶은데 적용이 안된 상태 2. 프로젝트 최상단 폴더 - 우클릭 - Add Framework Support 메뉴 클릭 3. Maven 체크 - OK 4. 결과 이전 1 2 3 다음