Dependency Injection (의존성 주입) "스프링 철저 입문" 책 정리 배경 의존관계를 가지는 컴포넌트들의 결합도를 낮추기 위해 나타남 - 컴포넌트 내에서 직접 의존관계를 가지는 컴포넌트에 대한 인스턴스 생성 public class UserServiceImp implements UserService{ private final UserRepository userRepository; private final PasswordEncoder passwordEncoder; public UserServiceImp(){ //구현체를 직접 생성 this.userRepsitory = new UserImplRepository(); this.passwordEncoder = new BCryptPasswordEnco..

spring boot validation을 적용하여 Exception 처리를 하고 있다. Exception 처리는 ControllerAdvice 를 이용하여 ExceptionHandler를 통해 공통적으로 작업하고 있는데, 평소와 같이 한 것 같은데 문제가 발생하였다. 문제 RestController에서 post 요청의 content를 자동으로 객체로 변한하도록 구현하였다. 그리고 변환받는 객체의 클래스에 있는 property에 validation 을 설정하였다. 그러나 단위테스트를 수행하는 중에 구현해놓은 ExceptionHandler에 진입하지 않고 계속해서 다른 에러를 뱉었다. BindException......음? 분명히... @Valid 에 대한 Excetion 클래스는 MethodArgumen..

작성한 코드에 대한 테스트를 수행하고 싶어, 제대로 알지 못한 상태에서 @SpringBootTest 를 붙여 테스트를 진행하였다. 이것저것 영상이나, 블로그를 보면서 @SpringBootTest를 여기저기 붙이길래, 아~ @SpringBootTest를 붙이면 테스트 되고 이게 Spring에서 제공하는 단위테스트 구나~ 라고 막연하게 생각하며 사용했었다. 그런데 TDD에 관심을 갖게되면서, @SpringBootTest는 주로 통합테스트에 사용하는 것으로, 이유는 모든 Spring이 관리하는 모든 Bean을 등록하여 테스트를 진행하기 때문임을 알게 되었다. 즉, 작은 단위에 기능테스트만 진행하기에는 모든 Bean을 등록하는 @SpringBootTest는 비용이 크다는 것이다. 그래서 해당 기능만을 테스트 하..

본 글은 rest docs 를 적용하기 위한 방법 및 적용하면서 발생한 문제, 해결 방법 등을 정리한 것입니다. rest docs 적용방법 1) test 코드 작성 2) snippet 파일 생성 3) adoc 파일생성 + snippet 파일 import 4) html 파일로 변환 5) 최종화면 ※ 전체 코드는 하단 git 참고 들어가기 전 spring rest docs 을 적용하기 위한 코드가 필요하다. 간단하게 member에 대한 CRUD 를 작성하였다. 1. test 코드 작성 GET Member에 대한 testcase @Test void getMemberTest() throws Exception { mockMvc.perform(get("/member/{name}", "john")) .andDo(pr..

다대일 관계의 단방향, 양방향에 대하여 정리한다. ※ 공부하면서 정리하므로, 잘못된 정보가 있을 수 있습니다. 잘못된 정보가 있을 경우 알려주시면 감사하겠습니다. :) JPA의 N:1 관계를 설정하기에 앞서 양방향? 단방향? 단방향 : 관계에서의 주인이 되는 Entity에서만 다른 Entity에 접근할 수 있는 것을 말한다. ※ 주인이 되는 Entity라는 것은 ? - mappedBy 속성을 포함하지 않는 Entity - 반대되는 개념 : non-owning side 양방향 : non-owning side Entity에서도 다른 Entity에 접근할 수 있는 것을 말한다. 즉, 양쪽 모두에서 데이터 접근이 가능하다는 의미이다. N : 1 관계 (다대일 관계) 란? Ex) Note와 Category의 관계..

jpa 많이 쓰는데... 쓸때마다 헷갈려서 이참에 제대로 확인하고 정리해보기로 했다. 관계 매핑으로 1:1, 1:N, N:1, N:M 있지만 본 글에서는 1:1에 대하여 정리한다. ※ 공부하여 정리하는 글로 잘못된 부분이 있을 수 있습니다. 잘못된 부분이 있다면 알려주시면 감사하겠습니다 :) 1 : 1 관계란? 1:1 관계란 서로 다른 두 엔티티가 각 입장에서 하나의 관계만 갖는다는 것이다. Ex ) 학생과 사물함은 1:1 관계를 가진다. 학생은 하나의 사물함을 가지며, 사물함은 한명의 학생에게만 사용된다. - 학생 한 명당, 사물함 1개만 제공한다는 가정하에... ㅎㅎ Spring Data JPA 를 이용한 1:1 관계 Foreign Key 를 이용한 방법 - 양방향 1) 1:1 관계인 두 entity..