spring
3 posts
Could not safely identify store assignment for repository candidate interface

🚫 에러 상황 Redis 내의 Refresh token 값을 다루기 위해 CrudRepository 를 사용하고, RDBMS 내의 데이터를 다루기 위해 JpaRepository 를 사용했습니다. 프로젝트를 실행하면 뜨는 여러 로그 중 에러는 아니지만, 반갑지 않은 INFO 로그가 2개의 영역으로 나뉘어 7개 정도 반복되는 것을 확인했습니다. 엔티티 클래스 수 만큼 반복 되었고, 아래처럼 로그가 출력됐습니다. A 영역: Spring Data JPA B 영역: Spring Data Redis 로그는 두개의 영역으로 나뉘었고, 읽어보면 “Spring Data JPA: 엔티티의 레포지토리에 대해 식별할 수 없다. 만약 이 레포지토리를 JPA repository로 만들려면 @Entity 어노테이션을 사용해라” “Spring Data Redis: 엔티티의 레포지토리에 대해 식별할 수 없다. 만약 이 레포지토리를 Redis repository로 만들려면 @RedisHash 어노테이션을 사용해…

Spring rest docs 설정

🤔 적용 이유 프론트엔드 개발자는 백엔드 개발자가 작성한 api 문서를 보고 api 를 매핑합니다. 문서를 작성하는 것은 노동력이 들어가는 것이고, 사람이 작성하기 때문에 변경된 사항을 업데이트를 하지 않는 경우도 존재합니다. spring-rest-docs 는 테스트 코드를 작성해야 하고, 빌드 시 api 문서가 자동으로 생성됩니다. 테스트 코드를 작성하면서 검증된 api 문서를 자동으로 생성할 수 있다! vs Swagger Swagger 도 문서화를 위해 많이 사용된다고 했습니다. 보다 UI 가 깔끔해보이는 장점이 있었습니다. spring-rest-docs 와 달리 테스트 코드가 의무가 아니므로 빠른 시간 내의 문서를 작성할 때 용이할 거라 생각이 듭니다. 단점으로는 컨트롤러 코드 주위에 문서를 위한 코드를 작성해야 된다는 점입니다. 가독성이 중요하다고 판단되어 spring-rest-docs 를 사용하기로 결정했습니다. ⚙️ 적용 하기 1. build.gradle build 시 자…

Builder 어노테이션 사용시, List 추가에 대한 NullPointerException

🚫 에러 상황 builder 패턴을 사용하여 유저 인스턴스를 생성했고, userGroups 필드(List)에 데이터를 추가하자 NullPointException 이 발생했다. java.lang.NullPointerException: Cannot invoke “java.util.List.add(Object)” because the return value of “user.domain.User.getUserGroups()” is null User 엔티티 User 생성 - builder 사용 📜 에러 원인 null 인 리스트에 데이터를 추가할 수 없다는 것이다. 엔티티에서 리스트 필드를 초기화 했음에도 불구하고 null 인 상황인다.. 의심가는 건 builder 메서드를 사용 시 List 의 값은 입력하지 않았다. 알아보니 builder 패턴은 엔티티에서 초기화한 값을 무시하고 초기화를 한다. 따라서 builder 패턴 사용 시, 생성된 유저의 List 필드는 아래와 같았을 것이다. 🔑 …