본문 바로가기

분류 전체보기112

Mockito - 메서드 체이닝 테스트 코드 작성하기 개요mockito를 사용하여 테스트 코드를 작성하다 보면 Spring WebClient처럼 메서드 체이닝을 사용하여 작성된 코드에 테스트 코드를 작성해야 하는 경우가 있다. 일반적인 mock 처리 방법을 사용하여 테스트 코드를 작성하면 메서드 체이닝에 포함된 모든 메서드에 대하여 mock 처리 코드를 추가해야 하지만, Mockito의 RETURNS_DEEP_STUBS를 사용하면 테스트 코드를 더 간결하게 작성할 수 있으니 알아보도록 하자. As-isMockito를 사용하여 기존처럼 테스트 코드를 작성하면 webClient에 메서드 체이이닝에 대하여 모든 메서드를 given으로 mock 처리를 해야 해서 테스트할 코드보다 테스트 코드가 길어지는 상황이 발생하게 된다.class WebClientService.. 2025. 8. 25.
Elasticsearch 최신 데이터에 score 가중치 부여하기 개요Elasticsearch를 사용하여 검색할 때 정적 데이터를 기반으로 더 높은 score를 부여하고 싶을 때가 있다. 예를 들어 게시글 검색의 경우 최신 게시글에 더 높은 score를 부여하거나, 제품 검색의 경우 판매량이 높은 제품에 대하여 높은 score를 부여하는 경우다. (score를 사용하지 않고 sort를 사용하여 정렬하면 score는 무시하고 문서가 정렬되기 때문에 정확도는 떨어질 수 있다.) Elasticsearch에는 정적 관련성 신호를 점수에 반영(Incorporating static relevance signals into the score)하는 두 가지 방법이 있다.script_socre: https://www.elastic.co/docs/reference/query-langua.. 2025. 8. 18.
Spring - Path Prefix 개요Spring을 사용하여 API를 개발할 때 여러 개의 Controller를 생성하고, @RequestMapping을 사용하여 각 Controller에 공통된 Prefix Path를(ex /api/v1.0/, ...) 설정하는 방법으로 API의 URL을 정의해 왔다. 이번 포스트에서는 Spring의 WebMvcConfigurer를 사용하여 원하는 Controller에 Path Prefix를 설정하는 방법을 알아본다. As-isWebMvcConfigurer를 사용하는 방법을 알아보기 전에 기존 프로젝트의 코드에서는 대부분 아래와 같이 개발하는 경우가 많았다.Controller에 @RequestMapping을 사용하여 상수로 정의한 API_PREFIX를 path 문자열 앞에 추가하여 API URL을 정의한.. 2025. 8. 18.
Elasticsearch 숫자형 데이터 검색 성능 개선 개요Elasticsearch에서 ISBN, 제품의 ID 또는 카테고리 ID와 같은 숫자형 데이터를 검색할 때, 숫자형 데이터의 타입을 keyword 타입으로 변경하면 검색 성능이 향상되는 경우가 있다. 이번 게시글에는 숫자형 데이터를 keyword로 타입을 변경하여 검색 성능이 향상되는지 알아보자. Elasticsearch Field data typesElasticsearch에는 다양한 데이터 타입을(https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/field-data-types) 제공하고 있다. 사용자는 색인할 데이터에 맞는 타입을 선택하여 mapping 정보를 입력해야 올바른 검색 방법과 검색 결과를 얻을 수 있다.숫자형 데이.. 2025. 8. 5.
Spring Framework 7.0.0 API Versioning 개요이번 포스팅에는 Spring Framework 7.0.0에 포함될 API Versioning 기능에 대해서 알아보자.Restful API로 클라이언트와 통신하는 서비스에서는 URI에 버전을 포함하여(ex /service/v1.0/users) API를 작성하고, API가 변경됨에 따라 API의 버전을 추가하거나 변경하는 전략을 사용해 왔다. Spring Framework 7.0.0에는 기존에 URI를 설정하던 @RequestMapping 어노테이션에 version 어트리뷰트를 추가하여 API Version을 관리하는 기능을 제공한다. API Versioning을 사용하는 이유하위 호환성 유지 (Backward Compatibility)점진적 마이그레이션 (Gradual Migration)API 진화 관.. 2025. 7. 31.
Spring Framework 7.0 - Resilience Features (회복력 기능) 개요Spring Framework 7.0에는 Resilience(회복력) 기능이 spring-core에 추가되었다. 7.0 이전 Spring 개발팀은 Spring Retry 프로젝트(https://github.com/spring-projects/spring-retry)를 별도의 프로젝트로 제공했으나 Spring Framework 7.0 버전 출시에 맞춰 불필요한 기능을 정리하고 일부 API를 개선하여 spring-core 패키지로 추가했다.상세한 내용은 공식 문서를 참고한다.(https://docs.spring.io/spring/reference/7.0-SNAPSHOT/core/resilience.html) 이번 게시글에서는 Spring Framework 7.0에 포함된 Resilience Feature.. 2025. 7. 27.
728x90