[개발일지] 230509 @Mock, @MockBean, @InjectMocks의 관계
·
성장이야기/TIL
오늘은 회사에서 테스트 코드 작성 중 기존 테스트 코드를 살펴보다 어떤 곳은 @InjectMocks를 사용했고 어떤 곳은 @MockBean을 사용하고 있길래 어떤 차이가 있는지 궁금해서 알아봤다. 오늘 새로 배운 내용 @Mock, @InjectMocks, @MockBean의 관계 @Mock은 Mock(가짜) 객체를 생성하고, @InjectMocks는 클래스의 인스턴스를 생성한 후 @Mock 어노테이션으로 생성된 Mock 객체를 이 인스턴스에 주입한다. @MockBean은 스프링 컨텍스트에 Mock 객체를 등록해 @SpringBootTest와 함께 사용할 때 @Autowired가 붙은 필드에 자동으로 의존성을 주입한다. @Mock: @Mock 어노테이션은 Mock(가짜) 객체를 생성한다. Mock 객체는..
2023년 5월 1주차 주간회고
·
성장이야기/주간회고
Facts (사실, 객관) 업무를 하며 배운것들을 기록하기 위해 개발일지를 작성하기 시작했다. 어렵다고 소문난 DDD가 무엇인지 알게되었다. 회사에서 코드 리뷰를 받으며 리팩터링 하기 시작했다. (생각하지 못했던 부분들에 대해서 피드백을 받았다.) 애매하게 알고 사용하고 있던 정적 팩터리 메서드의 사용 목적과 이유에 대해 공부했다. 데브노트 정리할 때 아직도 학습키워드에 의존하는 느낌이 있어 의도적으로 모르는 개념을 추가로 공부했다. 예비군을 다녀왔다. (더워 죽는줄..) Feelings (느낌, 주관) 밖에서 공부하는게 버릇이 되어, 집에서 공부할떄 전혀 집중을 하지 못하는 느낌이다. 집중하는 시간을 작게라도 가져가기 위해 해야할 일을 작게 쪼개서 하나씩 클리어하는 방향으로 작게작게 시작해야겠다. 데브..
[개발일지] 230504 IN절 안의 foreach문
·
성장이야기/TIL
오늘 새로 배운 내용 foreach문을 이용해 반복해서 쿼리를 날릴 때, 전체적인 쿼리를 날리는 것보다 IN절 안에서 foreach문을 이용해 반복하는 게 효율이 더 좋다. 아래쿼리처럼 foreach문을 작성하면 전달받은 list의 크기만큼 전체 쿼리가 발생하기 때문에 비효율적이다. SELECT * FROM users WHERE user_id = #{userId} 예를 들어 userId가 들은 list의 사이즈가 10이면 "SELECT * FROM users WHERE user_id = #{userId}" 전체 쿼리가 10번이 날아간다. 하지만 전체 쿼리를 10번 반복할 필요 없이 IN절 안에 foreach문을 작성해 주면 전체쿼리 발생수가 한 번으로 줄어들어 쿼리 발생 비용을 줄일 수 있어 더 효율적이..
[개발일지] 230502 flatMap과 동적쿼리 foreach문
·
성장이야기/TIL
오늘 새로 배운 내용 flatMap 기존 Redis에서 가져온 데이터와 DB에서 가져온 데이터를 새로운 Response 객체를 만들어서 Service에서 조합해서 응답하는 방식으로 설계했었는데 응답값을 조합하는 방식이 복잡해져 Service가 배보다 배꼽이 커지는 상황이 발생했다. 그래서 Service에서 조합하는것이 아닌 새로운 Response 객체를 만들어서 그 객체안에서 조합해서 응답하는 방식으로 변경하는게 좋겠다는 리뷰를 받았다. 객체들을 조합할 때 처음으로 stream의 flatMap 메서드를 사용해봤는데 각 요소를 인자로 변환하는 map메서드와 다르게 flatMap은 각각의 요소를 다른 스트림으로 변환하는 기능이였다. flatMap 예시 List words = Arrays.asList("FLA..
2023년 4월 4주차 주간회고
·
성장이야기/주간회고
Facts (사실, 객관) 회사에서 사용하려던 Java의 record가 학습 키워드로 나와 실제로 실무에 적용도 해봤다. MyBatis를 이용해 쿼리 작성하는것에 익숙해졌다. 이번에 첫 월급을 받아 본가에 내려와 부모님께 선물을 드렸다. 개발공부를 시작하면서 부터 만나지 못했던 친구들을 오랜만에 만났다. 이번주는 절대적인 공부시간이 적었다. 주 운동 4회 Feelings (느낌, 주관) 주말에는 본가에 내려가서 오랜만에 가족, 친구들과 시간을 보내느라 공부를 전혀 하지 못해 주어진 과제를 제대로 완수하지 못했다. 아무래도 이제부터는 주말에도 일정시간 공부하는 시간을 확보해야 할 것 같다. 강의 학습할때 아직까지도 수동적으로 하는 느낌이 있다. 학습키워드에 너무 의존하지말고 모르는 개넘이나 헷갈리는 개념있..
2023년 4월 3주차 주간회고
·
성장이야기/주간회고
Facts (사실, 객관) 웹 개발자라면 한 번은 들어봤을 단어인 REST에 대해 공부했다. Spring으로 Web을 MVC패턴으로 구현하기 위한 각 어노테이션을 알아보고 퀘스트를 하며 적용해 봤다. 데브노트를 목요일까지 제출하지 못했다. 회사에 점점 적응해가고 있다. (생활적인 부분이나 업무적인 부분이나) 부족한 체력과 건강을 위해 운동을 시작했다. Feelings (느낌, 주관) REST에 대한 데브노트를 작성하면서 REST에 대해서는 좀 더 공부해야 할 필요가 있을 것 같다고 생각했다. 간단히 REST API 설계하는 퀘스트가 재미있었다. Findings (배운 점) 기능을 하나 구현할 때, 여러 가지 케이스를 생각하고 선택한 방법에 side effect는 없는지, 더 효율적인 방법은 없는지 구현에..