MongoDB Atlas 설정 https://devfunny.tistory.com/850 [MongoDB] MongoDB Altas Free버전 Compass 사용하기 1) monggoDB 사이트 접속 https://account.mongodb.com/account/login?signedOut=true Cloud: MongoDB Cloud account.mongodb.com 2) 회원가입 후 로그인시, 접속되는 화면 3) create a database ■ [Build a Database] ■ [Create] ■ [Create Cluste devfunny.tistory.com MongoDB Atlas 연동 1) [Connect] 클릭 2) [Drivers] 선택 3) [Driver], [Version] ..
Reactive streams 구현 라이브러리 ReactiveStreams의 구현 라이브러리를 하나씩 알아보자. Project reactor 리액티브 스트림 스펙의 구현체 중 하나로, 리액티브 프로그래밍 라이브러리 RxJava 리액티브 프로그래밍을 위한 라이브러리 Mutiny 리액티브 프로그래밍을 위한 작은 크기의 라이브러리 Project reactor Pivotal 사에서 개발 Spring reactor에서 사용 Java 및 Spring에서 사용되는 리액티브 프로그래밍 라이브러리 Mono와 Flux publisher를 통해 비동기적으로 데이터를 다룰 수 있다. Project reactor - Flux 0..n개의 item을 전달 에러가 발생하면 error signal 전달하고 종료 모든 item을 전달..
트랜잭션 관리자 스프링 프레임워크에서는 트랜잭션 적용을 비교적 쉽게 구현하도록 도와주는 기능이 있다. 예시로, 트랜잭션 관리를 위한 코드를 비즈니스 로직에서 분리하기 위한 구조나 다른 트랜잭션을 투명하게 처리할 수 있게 하는 API 등이 있다. 스프링 트랜잭션 처리의 중심 인터페이스는 PlatformTransactionManager 이다. 이 인터페이스는 트랜잭션 처리에 필요한 API를 제공하며 개발자가 API를 호출하는 것으로 트랜잭션을 수행할 수 있다. PlatformTransactionManager는 트랜잭션 관리의 구현 방식을 추상화하기 위한 인터페이스이기 때문에 개발자는 서로 다른 종류의 트랜잭션을 사용하더라도 각각의 차이점을 의식할 필요 없이 같은 API로 조작할 수 있다. public int..
CompletableFuture 클래스 CompletableFuture 클래스는 java8에 도입된 Future, CompletionStage 인터페이스의 구현체다. public class CompletableFuture implements Future, CompletionStage { ... } Future 비동기적인 작업을 수행 해당 작업이 완료되면 결과를 반환하는 인터페이스 java5부터 java.util.concurrency package에서 비동기의 결과값을 받는 용도로 사용 CompletionStage 비동기적인 작업을 수행 해당 작업이 완료되면 결과를 처리하거나 다른 CompletionStage를 연결 하는 인터페이스 쉽게 말하자면, 하나의 비동기 작업을 수행하고 완료가 되었을 때, 여기에 ..
들어가며 Redis에 어떤 자료구조가 있고, 이 자료구조마다 어떤 커맨드를 수행해서 데이터를 관리하는지 기록하고자 포스팅한다. Redis 관련 도서를 찾지 못했었는데 최근, '개발자를 위한 레디스' 라는 책이 출간되어 읽고있는데 Redis 기본개념을 공부하기에 적합한것 같다. Redis (Remote dictionary server) key-value 형태의 오픈소스 기반 데이터 저장소로, 인메모리(in-memory) NoSQL 데이터베이스다. 레디스에서 모든 데이터는 key에 연결되어있기 때문에 데이터를 저장하고, 저장된 데이터를 검색할 때에는 항상 key를 식별자로 이용한다. NoSQL No SQL 혹은 Not Only SQL을 의미한다. SQL(Standard Query Language)을 사용하지..
명령어 스타일 (imperative style) 컴퓨터에게 정해진 명령 또는 지시를 하나하나 내림으로써 각 명령 단계마다 시스템의 상태를 바꾼다. 처음에는 단순화하려는 의도나, 시스템이 커질수록 복잡해지며, 그 결과 코드를 더이상 유지보수할 수 없게 되고, 테스트 하기 어려워지며 코드를 추론하는데에 어려워진다. 함수형 프로그래밍 (FP, Functional Programming) 위 명령어 스타일의 대안으로, '부수 효과'를 완전히 없애는 개념이다. 함수형 프로그래밍의 전제는, 순수 함수를 통해 프로그램을 구성한다는 것이다. 부수 효과 (Side Effect) 결과를 반환하는 것 외에 무언가 다른 일을 하는 함수는 부수 효과가 있는 함수다. 변경이 일어나는 블록 외부 영역에 있는 변수를 변경한다. 데이터..
Caller와 Callee 함수가 다른 함수를 호출하는 상황 Caller : 호출하는 함수 Callee : 호출 당하는 함수 함수형 인터페이스 함수형 인터페이스는 호출한 쓰레드에서 실행된다. @Slf4j public class p030_FunctionalInterfaceExample { public static void main(String[] args) { var consumer = getConsumer(); consumer.accept(1); var consumerAsLambda = getConsumerAsLambda(); consumerAsLambda.accept(1); handleConsumer(consumer); } public static Consumer getConsumer() { Consu..
들어가며 간단한 SimpleJob 예제의 TaskletStep의 실행 흐름을 디버깅을 통해 직접 확인해보자. 예제코드 TaskletStepArchitectureConfiguration.java import lombok.RequiredArgsConstructor; import org.springframework.batch.core.*; import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; import org.springframework.batch.core.launch..
들어가며 간단한 SimpleJob 예제의 실행 흐름을 디버깅을 통해 직접 확인해보자. 이번기회에 실행 흐름을 정리해서 앞으로 BatchJob 예제를 수행할때마다 흐름을 따라갈 수 있도록 글을 남긴다. 예제코드 JobTextConfiguration.java @Configuration @RequiredArgsConstructor public class JobTestConfiguration { // job 생성 private final JobBuilderFactory jobBuilderFactory; private final StepBuilderFactory stepBuilderFactory; @Bean public Job testJob() { return this.jobBuilderFactory.get("t..
SpringBatch5의 다양한 파라미터 지원 https://devfunny.tistory.com/930 SpringBatch5 변경사항 정리 (vs SpringBatch4) SpringBatch 5.0 이전 SpringBatch 공부할때 SpringBatch 4.0 버전이였다. 최근, SpringBatch 복습을 위해 새로 프로젝트를 셋팅하면서 업데이트된 SpringBatch 5.0을 선택했는데, 생각보다 4.0 버전에 달라진 사항들 devfunny.tistory.com 위 SpringBatch4 vs SpringBatch5 포스팅에서도 설명했지만, SpringBatch5 부터 다양한 파라미터를 사용할수 있게 되었다. 기존 SpringBatch4 Long, Double, Sring, Date 타입의 파..
SpringBatch 5.0 이전 SpringBatch 공부할때 SpringBatch 4.0 버전이였다. 최근, SpringBatch 복습을 위해 새로 프로젝트를 셋팅하면서 업데이트된 SpringBatch 5.0을 선택했는데, 생각보다 4.0 버전에 달라진 사항들이 있었다. 잊어버리기 전에 정리해보고자 포스팅한다. SpringBatch 5.0 변경사항에 대한 공식 홈페이지는 아래와 같다. https://docs.spring.io/spring-batch/docs/current/reference/html/whatsnew.html What’s New in Spring Batch 5.0 Spring Batch 5.0 has the following major themes: Java 17 Requirement M..
오류상황 SpringBoot3.1.2 버전 프로젝트에 Swagger를 적용하려고한다. https://devfunny.tistory.com/692 SpringBoot + SpringSecurity 프로젝트에 Swagger 3.0 적용하기 이전 버전 Swagger 2.0 적용 방법 https://devfunny.tistory.com/313 SpringBoot에 Swagger을 빠르게 적용해보기 Swagger 요즘 백엔드 개발은 ModelAndView 방식보다는 API 위주의 어플리케이션을 권장하고 있다. API 개발 devfunny.tistory.com ▶ 이전에 Swagger3.0을 적용하고 남겨둔 포스팅이 있어서 참고했지만 아래와 같은 오류를 만나게된다. Type javax.servlet.http.Htt..
들어가며 리액티브 스트림즈(Reactive Streams)에 대해 공부하고 간단하게 정리했던 포스팅이 있다. https://devfunny.tistory.com/333 Reactive Streams Reactuve Streans를 들어가기 이전 Reactive Streams 포스팅을 들어가기전, Reactive Spring의 개념에 대해 알아야한다. 포스팅 바로가기 : devfunny.tistory.com/314?category=820617 Reactive Spring / Reactive Programming Reactive devfunny.tistory.com 리액티브 프로그래밍 책을 읽다보면, 해당 내용을 계속 만나게되는데 여러번 반복하며 학습한 결과 내용을 이해하는데 어려움은 없지만 볼때마다 헷갈리..
포스팅 목록 제목 URL 아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라 https://devfunny.tistory.com/526 아이템 2. 생성자에 매개변수가 많다면 빌더를 고려하라 https://devfunny.tistory.com/527 아이템 3. private 생성자나 열거 타입으로 싱글턴임을 보증하라 https://devfunny.tistory.com/528 아이템 4. 인스턴스화를 막으려거든 private 생성자를 사용하라 https://devfunny.tistory.com/529 아이템 5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 https://devfunny.tistory.com/530 아이템 6. 불필요한 객체 생성을 피하라 https://devfunny.tis..
Comparable 인터페이스 Comparable 인터페이스는 compareTo() 메서드가 유일하다. compareTo() 메서드는 단순 동치성 비교에 더해 순서까지 비교할 수 있으며, 제네릭하다. Comparable을 구현했다는 것은 그 클래스의 인스턴스들에는 자연적인 순서(natural order)가 있음을 뜻한다. 그래서 Comparable을 구현한 객체들의 배열은 손쉽게 정렬할 수 있다. Arrays.sort(a); 자바 플랫폼 라이브러리의 모든 값 클래스와 열거타입이 Comparable을 구현했다. 알파벳, 숫자, 연대 같이 순서가 명확한 값 클래스를 작성한다면 반드시 Comparable 인터페이스를 구현하자. Comparable.java public interface Comparable { ..