Spring
[Spring] Elastic Cloud + Spring Boot 3.x 연동하기
1. 의존성build.gradleimplementation 'org.springframework.boot:spring-boot-starter-data-elasticsearch' 2. API Key 연동ElasticSearchConfig@Configuration@EnableElasticsearchRepositoriespublic class ElasticSearchConfig extends ElasticsearchConfiguration { @Value("${spring.elasticsearch.api-key}") private String apiKey; @Value("${spring.elasticsearch.host}") private String host; @Override ..
[Spring] Spring Boot3.x Docker Compose로 ElasticSearch 8.x+Kibana 구성 (Local)
프로젝트 루트 디렉토리에 docker-compose.yml을 생성한다. 1. Docker Compose 파일 작성docker-compose.ymlversion: '3.7'services: es: image: docker.elastic.co/elasticsearch/elasticsearch:8.7.1 container_name: es environment: - node.name=es-node - cluster.name=search-cluster - discovery.type=single-node - bootstrap.memory_lock=true - ES_JAVA_OPTS=-Xms1g -Xmx1g - xpack.security.enab..
[Spring] Spring Boot 프로젝트 이름 변경하기
Spring Boot 프로젝트 이름을 변경해보자. 1. File > Project Structure > Name 변경 Name 부분을 변경할 프로젝트 이름으로 수정해준다. 2. settings.gradle rootProject.name을 수정해준다. 3. 변경 사항 적용 변경 사항을 적용하기 위해 코끼리를 클릭한다. 만약 프로젝트가 있는 폴더도 이동한 경우 애플리케이션 실행 시 다음과 같은 문제가 생길 수 있다. Two modules in a project cannot share the same content root. 프로젝트 폴더 안에 있는 .idea 폴더와 *.iml 파일을 삭제하고 IntelliJ를 다시 켜주면 된다.(자동 생성)
[WebFlux] Reactive Streams
Reactive Streams is an initiative to provide a standard for asynchronous stream processing with non-blocking back pressure. Reactive Streams는 논블로킹 백프레셔를 이용해 비동기 스트림 처리를 위한 표준을 제공한다. (리액티브 프로그래밍에 대한 인터페이스만을 제공) Reactive Streams 인터페이스 Reactive Streams의 주요 인터페이스는 다음과 같다. 1) Publisher 데이터를 생성하고, Subscriber에게 데이터를 발행한다. subscribe subscribe메서드에 인자로 Subcriber를 전달하여 등록한다. Publisher는 Subscriber에게 순차적으로 데..
[Spring] 의존성 주입(DI: Dependency Injection)
의존성 주입, 왜 필요할까? 의존성 주입의 필요성을 이야기하기 위해, 객체지향 설계의 SOLID 원칙을 간단히 언급하고 넘어가겠다. SOLID 원칙 SRP(Single Responsibility Principle): 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. OCP(Open/Closed Principle): 개방-폐쇄 원칙 클래스는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. LSP(Liskov Substitution Principle): 리스코프 치환 원칙 하위 타입은 상위 타입을 대체할 수 있어야 한다. ISP(Interface Segregation Prinicple): 인터페이스 분리 원칙 인터페이스를 클라이언트의 용도와 목적에 맞게 작게 분리하여 제공해야 한다. DIP(Depe..
[Spring] Junit5 테스트 No tests found for given includes 오류 해결
IntelliJ에서 Junit5 로 테스트를 하려고 했는데 오류가 발생했다. File > Settings > Build, Execution, Deployment > Build Tools > Gradle 다음 부분을 IntelliJ IDEA로 변경해주었다.
[Spring] 아임포트 사용한 결제 구현 + JavaScript/React 코드
1. 계정 생성 https://portone.io/korea/ko 2. 결제 연동 좌측 메뉴에서 결제 연동 탭으로 이동하자. 내 식별 코드를 클릭하면 결제창 연동 및 API 호출 시 필요한 연동 정보를 확인할 수 있다. 하단에서 결제대행사를 추가해주자. 필자는 카카오페이로 PG사를 선택하고 추가 해주었다. 다음과 같이 창이 뜨고, 변경한건 없다. 다음과 같이 등록된걸 확인할 수 있다. 3. JavaScript 코드 resources/templates/payment.html 을 생성했다. PG사 코드는 다음 링크에서 확인할 수 있다. 위에서 등록한 PG사의 코드를 사용해야 한다. https://developers.portone.io/docs/ko/tip/pg-2 결제하기 4. React 코드 import ..