[ Spring Boot ] TossPayment API 중복 거래 결제 방지하기 (멱등성 보장)
·
Spring Boot
개요이전의 프로젝트에서 결제 도메인을 담당했었고 토스페이먼츠를 구현하는데 시간이 부족해 핵심 구현만 빠르게 진행하고 그뒤에 보수를 하지못했다. 다른 사람들이 한걸보니까 중복결제가 안되도록 헤더의 결제의 고유 값을 포함해 전달해 통신의 문제가 생겼을경우가 api 요청이 올바르게 되지않은 경우에 중복결제가 되는것을 방지하도록 한걸 보았다. 오늘은 기존의 결제 로직과 결제 엔티티를 리팩터링하는 과정을 가져보도록한다. 멱등성이란?어떤 연산을 여러 번 수행해도 결과가 단 한 번 수행한것과 같은 성질을 의미한다.간단하게 하나의 api를 몇 번을 호출해도 항상 똑같은 결과가 나오는 것을 말하낟. 결제 시스템처럼 돈과 관련된 중요한 처리에서는 멱등성이 상당히 중요하다.개요에서 설명한 거 처럼 결제 버튼을 눌렀는데 네..
[ Spring Boot ] Elasticsearch 검색 기능 구현 ( 3 )
·
Spring Boot
추천 검색 기능 및 검색 고도화 기본적인것들은 전부 정상적으로 동작하는걸 봤다.엘라스틱 서치를 사용하면서 해보었던 추천 검색어 기능을 해볼건데 네이버네 구글처럼 사용자가 잘못된 명칭이나 오타로 입력해도원래 의도한 검색어를 찾아서 제안해주는 기능을 만들거다 검색기능을 만들 때 ElasticsearchRepository를 사용해 간단하게 구현하는 방법과 고급검색기능(자동완성, 추천 검색어, 집계 등)을 구현할때는 ElasticsearchClient를 사용하는 방법이있다. 나는 후자로 진행 ElasticsearchClient 란 무엇인가?ElasticsearchRepository를 이용해서 기본적인 CURD나 쿼리메서드 기반 검색은 가능하지만 자동완성 같은 고급 기능은 Repository 만으로는 한계가있다...
[ Spring Boot ] Elasticsearch 검색 기능 구현 ( 2 )
·
Spring Boot
Elasticsearch를 활용한 검색 기능 구현1. 의존성 추가springboot에서는 의존성으로 엘라스틱 서치를 쉽게 연동할 수 있다.jpa처럼 엘라스틱서치repository를 구현해 데이터를 저장하고 다룰 수 있게 해주는 라이브러리이다. implementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch' 2. Elasticsearch 연결을 위한 Config 설정적용을 하고나면 간단한 기본 세팅을 해줘야한다package com.onnongwa.back_end.domain.config;import org.springframework.beans.factory.annotation.Value;import org.springfram..
[ Spring Boot ] Elasticsearch 검색 기능 구현 ( 1 )
·
Spring Boot
docker-compose.yml 작성elasticsearch을 도커 환경에서 동작 시킬거기 때문에 compose 파일을 하나 작성해준다. version: '3.8'services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.6.0 container_name: elasticsearch environment: - discovery.type=single-node - xpack.security.enabled=false ports: - "9200:9200" - "9300:9300" volumes: - esdata:/usr/share/elasticsearch/..
[ 백준 ] 문자열 폭발 Gold4
·
Algorithm
문제상근이는 문자열에 폭발 문자열을 심어 놓았다. 폭발 문자열이 폭발하면 그 문자는 문자열에서 사라지며, 남은 문자열은 합쳐지게 된다.폭발은 다음과 같은 과정으로 진행된다.문자열이 폭발 문자열을 포함하고 있는 경우에, 모든 폭발 문자열이 폭발하게 된다. 남은 문자열을 순서대로 이어 붙여 새로운 문자열을 만든다.새로 생긴 문자열에 폭발 문자열이 포함되어 있을 수도 있다.폭발은 폭발 문자열이 문자열에 없을 때까지 계속된다.상근이는 모든 폭발이 끝난 후에 어떤 문자열이 남는지 구해보려고 한다. 남아있는 문자가 없는 경우가 있다. 이때는 "FRULA"를 출력한다.폭발 문자열은 같은 문자를 두 개 이상 포함하지 않는다.입력첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작..