[Spring MVC] org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type 오류
·
Logging/Spring
API 테스트를 하다가 이해가 안되는 상황이 발생했는데, 이런 상황이 발생할 수도 있구나 싶고 누군가에게 도움이 될 수도 있을 것 같아서 짧게 기록해둔다. 다음과 같은 페이징 조회를 하여 특정 테이블에서 추천 인스턴스들을 반환하는 요청을 만든 후 API 테스트를 하던 중 발생하였다. @GetMapping("/api/v0/hello/suggest") public ResponseEntity getHello( @RequestParam(required = false, defaultValue = "") String aFilter , @RequestParam(required = false, defaultValue = "") String bFilter , @RequestParam(defaultValue = "-1")..
[JPA] OSIV 만 믿었다가 Lazy 로딩에 발등찍힌 썰
·
Logging/Spring
작업을 하다가 처음 보는 문제점을 확인해서 로깅 기록을 남겨보게 되었다. 요즘 글 많이 쓰기 힘들어서 문제 설명만 하고 빨리빨리 진행하겠다. 이 로직만 정말 하루 종일 작업했다. 1. 문제 상황 Group 과 GroupCategory, Category 가 있다. 카테고리에는 categoryValue 가 있고, Group 과 Category 는 N:N 관계이며 GroupCategory 테이블이 둘을 연결해준다. Group 을 검색하는 로직을 만들고 있을 때, JPQL, 1:N 의 fetchJoin 에서의 Paging 처리 문제 등등으로 인해서, GroupCategory 와 Category 를 fetch Join 하지 못한채 원하는 Group List 를 가져온 상황이다. (이럴 수밖에 없었음.. 해쉬태그 ..
Spring Boot 개발하면서 요즘 드는 생각
·
Logging/Spring
첫번째. 정말 많은 객체들의 동작들이 서로 연결되어 있다. 지금 하는 개발이 다른 객체들에게 어떤 영향을 주는지를 정확하게 알아야 하고, 역할을 분리해야 하고 등등.. 처음에 각 도메인들 CRUD 식으로 도메인 개발할 때야 쉬웠지만, 심화되다보면 빼먹은 비즈니스 로직, 변하는 비즈니스 로직에 따라서 이 어찌어찌 얽혀있는 것들을 계속 풀어내야 한다. 그쯤되면 앱이 더러워 보이고, 키기 무서워지고, 다시 하고 싶거나, 그만하고 싶어진다. 이럴 때 믿을건 Test 코드들 뿐인 건 공감한다. 하지만 Test 들도 언제나 프로젝트 처음 시작할 때 만든 나의 Test 는 개판이고 쓰레기라, 유지보수 덩어리로만 보인다. 이 임계지점을 넘어야 하는 것 같다. 그래야 SW 가 나오는 것 같다. 토이성 프로젝트로 만드는 ..
[문제기록] Lombok @Getter 사용시 boolean 값 처리에 대하여
·
Logging/Spring
프로젝트를 하던 중, 다음과 같은 Request DTO 를 만들어야 할 일이 있어서 만들었다. @Getter @Setter @NoArgsConstructor public class ACreateReqDto { private String name; // ... private boolean hasRule; @JsonProperty("rule") private RuleCreateReqDto ruleDto; @Getter @Setter public class RuleCreateReqDto{ private String ruleName; private boolean isAgeRule; } } 이렇게 해서 다음과 같이 요청처리 코딩을 완료해서 다음과 같이 날려보았다. 다 잘 들어오는줄 알았는데, 이상하게도 isAge..
[문제기록] DataJpaTest 시 NoSuchBeanDefinitionException / UnsatisfiedDependencyException
·
Logging/Spring
새로운 프로젝트에서 Query 가 들어있는 Repository 단을 Test 해야 해서 진행을 해보았다. 일반 Repository 의 모습이라 다음 정도 수준이였다. public interface MemberRepository { Optional findByUsername(String username); } @Repository @RequiredArgsConstructor public class MemberJpaRepository implements MemberRepository{ private final EntityManager em; private final JPAQueryFactory queryFactory; ... @Override public Optional findByUsername(Strin..