1. @Embedded, @Embeddable
2. record
3. @NoArgsConstructor(access = AccessLevel.PROTECTED)
4. @Repository
- JpaRepository를 extends할때는 굳이 적을 필요없긴함.
5. @PatchMapping vs @PutMapping
- @PatchMapping : 원하는 정보만 수정
- @PutMapping : 모두 수정
6. MockMvc : Controller test
- @WebMvcTest(AuthController.class)
- 404 error : @WebMvcTest(AuthControllerTest.class)
7. Test code
- 외부 API 테스트
- MockMVC는 스프링부트 내에서 제작한 API를 제작하는 빈이다.
따라서 RestTemplate를 가져와서 테스트를 하였다.
MockRestServiceServer mockServer = MockRestServiceServer.createServer(restTemplate);
- 카카오 로그인의 url은 이렇다.
kauth~로 시작하는 authorization uri을 기본으로,
- redirecturi
- client_id
- responsetype
세게의 파라미터를 쿼리스트링에 입력하여 auth/login~로 리다이렉트 시킨다.
실제로 실행하면서 기능을 점검해도되는데, 나는 매번 실행시키는게 귀찮아서 테스트 코드로 작성하였다.
302 FOUND를 반환하고 redirecturi로 파싱되는지만 확인한다.
-
엑세스 토큰을 입력하면 클라이언트로 반환하는 코드다.
확인은 jsonpath를 사용해서 확인하였다.
-
로그아웃은 refreshtoken이 삭제되는지 확인하였다.
원격 레디스와 연결이 되어있고 이를 성공적으로 수행하였다.
JPA
FetchJoin(FetchType.LAZY)
Converter
- DB -> spring
- spring -> DB
- 데이터 변환
- AttributeConverter implements
영속성 컨텍스트
- querydsl로 추출한값을 수정하면 왜 저장을 하지않아도 반영이 되는가?