본문 바로가기

728x90
728x90

티스토리챌린지

[Spring] Spring에서 요청 받는 법: @ModelAttribute vs @RequestParam - 컴도리돌이 API 요청을 받을 때 @ModelAttribute와 @RequestParam 어노테이션을 어떻게 사용해야 효과적인지, 각각의 차이점과 장단점을 비교해 보겠습니다. 이 두 어노테이션은 Spring에서 자주 사용되며, 요청 데이터를 받는 방식에서 중요한 역할을 합니다.@ModelAttribute@ModelAttribute는 객체 단위로 요청을 받을 때 유용합니다. 특히, 메인 페이지의 주요 리스트와 같이 여러 필드를 가진 요청을 받을 경우 유용하죠. 예를 들어, 클라이언트가 일부 필드를 빼먹거나 추가 필드를 보내더라도, @ModelAttribute는 기본적으로 없는 필드는 null로 처리하고, 불필요한 필드는 무시합니다.@GetMapping("list")public ResponseEntity getList.. 더보기
[Spring] 컨트롤러 단위 테스트: @WebMvcTest와 @SpringBootTest의 선택과 활용 -컴도리돌이 작심삼주 오블완 챌린지오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.www.tistory.com작업한 로직을 테스트하기 위해 컨트롤러에 단위 테스트 클래스를 작성하고, @WebMvcTest로 URL에 요청 테스트를 시도해 봤습니다. 하지만 예상보다 많은 난관이 있어 처음에는 쉽게 진행되지 않았습니다. 특히 여러 서비스와 유틸리티 클래스들을 어떻게 처리할지에 대해 고민이 많았네요. 🥲No qualifying bean of type available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 위와 같은 에러가 발생하면서 테스트가 중단되었고, 이에 대한 해결책을.. 더보기
[Spring] 단위 테스트에서 @WithUserDetails 사용하기: 발생한 에러와 해결 방법 - 컴도리돌이 작심삼주 오블완 챌린지오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.www.tistory.com단위 테스트를 작성할 때, 로그인 인증이 필요한 API 요청을 테스트하는 과정에서 @WithUserDetails 어노테이션을 사용해 인증된 상태를 시뮬레이션하려고 했습니다. 처음에는 예상보다 많은 오류가 발생해서 이 문제들을 해결하기 위해 어떻게 접근했는지 기록해 보려고 합니다. 😅  [Spring] 로그인 필요한 API 단위 테스트 - 컴도리돌이작심삼주 오블완 챌린지오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.www.tistory.com이제는 숨을 쉬듯이 API 요청 로직을 만들지만, 단 한 번도 테스트 코드로 API 요청을 테comdolidol-i.t.. 더보기
[Spring] 로그인 필요한 API 단위 테스트 - 컴도리돌이 작심삼주 오블완 챌린지오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.www.tistory.com이제는 숨을 쉬듯이 API 요청 로직을 만들지만, 단 한 번도 테스트 코드로 API 요청을 테스트해 본 적이 없었던 것 같아요. 초반에는 단위 테스트 작성이 시간이 오래 걸리고, 주요 로직보다 더 많은 작업이 될 것 같아서 외면했었죠. 🥲 그런데 로직을 수정할 때마다 프로젝트를 재가동시키며 테스트를 하니 오히려 더 많은 시간이 소요되는 것을 느꼈습니다. 뿐만 아니라 예기치 못한 문제들이 발생하거나, 기존 기능에 새로운 기능을 추가하면서 어떤 영향을 미칠지 파악하기 어려워졌습니다. 이 경험을 통해 이제 단위 테스트는 선택이 아닌 필수라는 생각이 들었습니다.  그래서 이제부터 API 요.. 더보기
[Elasticsearch] 성능 향상을 위한 doc_values 사용법: 메모리 효율 향상시키기 - 컴도리돌이 작심삼주 오블완 챌린지오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.www.tistory.comElasticsearch에서 성능을 최적화하는 것은 데이터 양이 많을수록 더욱 중요합니다. 보통 검색 속도에 집중하게 되지만, 메모리 사용 최적화 역시 시스템 성능에 큰 영향을 미쳐요. 이때 doc_values라는 기능이 등장하죠! 이 기능을 통해 메모리 사용을 절감하면서도 빠른 응답 속도를 확보할 수 있습니다. 😊근데 doc_values가 뭔데? 🤔doc_values는 필드 데이터를 메모리가 아닌 디스크에 저장하여 필요한 순간에만 참조할 수 있게 해주는 Elasticsearch의 기능입니다. 메모리 대신 디스크를 활용해 대량의 데이터를 효율적으로 다루게 하죠. 이를 통해 JVM 힙 .. 더보기
[Elasticsearch] 성능 개선을 위한 코드 비교 및 분석 - 컴도리돌이 작심삼주 오블완 챌린지오늘 블로그 완료! 21일 동안 매일 블로그에 글 쓰고 글력을 키워보세요.www.tistory.comElasticsearch로 데이터 검색 속도를 높이는 일은 단순히 쿼리 작성만의 문제가 아니었어요. 때로는 작은 설정 하나하나 코드 스타일이 성능 차이를 만들기도 합니다.불필요한 필드 설정 피하기먼저, 많은 분들이 텍스트 데이터를 다룰 때 대부분의 필드를 text로 지정하는 실수를 합니다. 🤔 텍스트 필드가 많으면 리소스를 불필요하게 잡아먹습니다. 아래처럼 너무 많은 필드를 text로 설정하면 검색 속도가 느려질 수밖에 없어요. // 잘못된 인덱스 설정 예시 { "mappings": { "properties": { "title": { "type": "text" }, "content":.. 더보기
[Elasticsearch] wildcard 쿼리에 대해 제대로 이해하기 - 컴도리돌이 RDBMS를 사용하다가 Elasticsearch에서 쿼리를 작성하면서 wildcard를 사용한 쿼리의 결과가 제가 생각했던 것과 달라서, 해당 내용에 대해 충분히 이해하기 위해 글을 작성하려고 합니다. Wildcard query를 작성하면서 예상했던 결과는 RDBMS의 LIKE에서 사용했던 '%searchInput%'와 같은 형태가 가능할 것으로 기대했는데, 막상 확인되는 결과는 그렇지 않았습니다. 원본 텍스트는 "경기도 용인시 기흥구 중동 1100번지"와 같은 형태의 주소입니다. 제가 시도한 쿼리는 다음과 같았습니다.{ "query": { "bool": { "must": [ { "wildcard": { "address": { "value": "*경기도 기흥구*" } } } ] } } } 그런데 결과는 .. 더보기