@Valid 와 BindingResult (또는 Errors) BindingResult 는 항상 @Valid 바로 다음 인자로 사용해야 함 (스프링 MVC) @NotNull, @NotEmpty, @Min, @Max ... 사용해서 입력값 바인딩 할때 에러 확인이 가능하다 도메인 Validator 만들기 Validator 인터페이스 없이 만들어도 상관없다. @Component public class EventValidator { public void validate(EventDto eventDto, Errors errors) { if (eventDto.getBasePrice() > eventDto.getMaxPrice() && eventDto.getMaxPrice() != 0) { errors.reject..
테스트 할 것 입력값으로 누가 id나 eventStatus, offline, free 이런 데이터까지 같이 주면? Bad_Request 발생 (이번 테스트!) vs 받기로 한 값 이외는 무시 핵심 코드 ObjectMapper 커스터마이징 spring.jackson.deserialization.fail-on-unknown-properties = true // deserialization : 역직렬화(JSON -> 객체) 를 하는데, unknown-properties가 있으면 -> fail-on 실패를 던진다.application.properties spring.jackson.deserialization.fail-on-unknown-properties=true #왜 deserialization이냐면, (Js..
테스트 할 것 입력값으로 누가 id나 eventStatus, offline, free 이런 데이터까지 같이 주면? Bad_Request 로 응답 vs 받기로 한 값 이외는 무시! (이번 테스트 방법) 입력값 제한 id 또는 입력 받은 데이터로 계산해야 하는 값들은 입력 받지 않아야 한다. EventDTO 적용 DTO -> 도메인 객체로 값 복사 ModelMapper 의존성 추가 org.modelmapper modelmapper 2.3.1 빈으로 등록 @Configuration 아래에 @Bean public ModelMapper modelMapper(){ return new ModelMapper(); }통합 테스트로 전환 @WebMvcTest 빼고 다음 애노테이션 추가 @SpringBootTest @Aut..
Test 1) JSON 응답으로 201이 나오는지 확인. - Location 헤더에 생성된 이벤트를 조회할 수 있는 URI 담겨 있는지 확인. - id는 DB에 들어갈 때 자동 생성된 값으로 나오는지 확인. 일단 Test 클래스를 만든다 테스트를 할 클래스에서 맥 기준으로 단축키 cmd + shift + T 를 눌러주면 테스트 클래스 생성해준다. Location URI를 만들건데, 여기서는 HATEOAS가 제공하는 linkTo() , methodOn()을 사용할 것 이다. 객체를 JSON으로 변환 할때, ObjectMapper를 사용. EventController 구현 package me.iseunghan.demoinflearnrestapi.events; import org.springframework...
의존성 추가 WEB JPA Hateoas H2 Lombok Event 생성 API 구현 : 비즈니스 로직 Event 생성 API package me.iseunghan.demoinflearnrestapi.events; import lombok.*; import javax.persistence.*; import java.time.LocalDateTime; //hashcode에서 of="id"로 준 이유? 연관관계가 있을때 그 관계가 상호참조 관계에서 참조하는 상황에서 스택오버플로우가 발생할수가 있기때문에, id로만 해시코드를 생성한다. //서로간에 메소드를 계속 계속 호출하기 때문에 스택오버플로우가 발생할 수 있다. @Builder @AllArgsConstructor @NoArgsConstructor @Ge..
스프링 JdbcTemplate 리포지토리 생성 설정은 Jdbc 설정과 동일하게 하면 된다. 스프링 Jdbc Data Access Layer 이해 DataSource 란? DB와 관계된 Connection 정보를 담고 있으며, bean으로 등록하여 인자로 넘겨준다. 이 과정을 통해 Spring은 DataSource로 DB와의 연결을 획득한다. DataSource 설정 및 빈 등록방법 application.properties spring.datasource.url=jdbc:h2:tcp://localhost/~/test #url : db의 url을 넣어주면 자동으로 connection이 됨. spring.datasource.driver-class-name=org.h2.Driver #h2를 사용 할 것이기 때문..