JAVA/Spring 9

[Spring] Spring Batch(4)

1. Job Parameter, Scope Job Parameter를 사용하기 위해선 항상 Spring Batch 전용 Scope를 선언해야 한다. 크게 @StepScope, @JobScope 두 가지가 있다. 사용법은 SpLE로 선언해서 사용하면 된다. - @Value("#{jobParameters[파라미터명]}") JobScope StepScope - @JobScope는 Step 선언문에서 사용 가능하고, @StepScope는 Tasklet이나 ItemReader, ItemWriter, ItemProcessor에서 사용할 수 있다. - 예제 코드에서 null을 호출하는 부분이 있는데 Job Parameter의 할당이 어플리케이션 실행 시에 하지 않기 때문에 가능하다. 2. 에서 좀 더 자세히 살펴보자..

JAVA/Spring 2023.05.19

[Spring] Spring Batch(3)

- Spring Batch Job Flow Spring Batch의 Job을 구성하는데 Step이 있다. Step은 실제 Batch 작업을 수행하는 역할을 한다. Job 내부의 Step들 간에 순서, 처리 흐름을 제어할 필요가 있는데 여러 Step들을 어떻게 관리하는지 정리해 보자. 1. Next - next로 순차적으로 Step을 연결할 때 사용한다. - 실행하면 잘 연결되어 나온다. 2. 조건별 흐름 제어(Flow) Next에서 순차적으로 Step의 순서를 제어하는 것을 확인했다. 여기서, 앞의 step에서 오류가 발생하면 나머지 뒤에 있는 step들은 실행되지 못한다. 하지만 상황에 따라서 정상일 때에는 Step B로, 오류가 발생했을 때에는 Step C로 실행되어야 할 경우가 있다. 이럴 경우를 ..

JAVA/Spring 2023.05.19

[Spring] Spring Batch(2)

1. Batch Job - 먼저 Spring Initializr에서 다음과 같이 설정해 준다. (여기서 JPA나 JDBC둘중에 하나만 사용하면 하나만 선택해 주면 된다.) - build.gradle 설정이 이렇게 나온다. - main 메소드에서 '@EnableBatchProcessing' 어노테이션으로 Batch기능을 활성화한다. - 위의 어노테이션을 선한하지 않으면 Spring Batch 기능을 사용할 수 없기에 필수로 선언해야 한다. - Job 패키지를 생성하고 안에 SimpleJobConfiguration을 생성한다. - @Configuration -> Spring Batch의 모든 Job을 Configuration으로 등록해서 사용한다. - jobBuilderFactory.get("simpleJo..

JAVA/Spring 2023.04.28

[Spring] Spring Batch(1)

1. 배치 애플리케이션? 개발자가 정의한 작업을 일괄 처리하는 애플리케이션이다. 예를 들어, 한 기업에서 사전 예약 이벤트를 진행했는데 신청한 유저의 데이터 수는 100만 건이라고 가정하면 사전 예약 이벤트를 접수한 모든 유저에게 메일을 보내야 한다. 이럴 때 사용하는 것이 Spring Batch이다. 다른 예로 월말 정산을 처리하거나, 따로 적재된 데이터베이스를 통합하는 작업, 은행 점검등이 있다. 로깅 / 추적, 트랜젝션 관리, 작업 처리 통계, 작업 플로우 지정, 리소스 관리 등 대량의 레코드를 처리하는데 필수적인 기능을 재사용 가능한 형태로 제공한다. 스프링 배치는 Java Based Configuration이 가능하다. XML 없이도 POJO 기반 개발 접근 방식으로 개발 가능한 의미이다. Ba..

JAVA/Spring 2023.04.26

[Spring] Spring Boot 3.0

Spring Boot 3.0으로 업그레이드되었다고 해서 바뀐 점이 무엇인가 알아봤습니다. Spring Boot 3.0의 특징 Java17, Java19를 지원 GraaIVM기반의 Spring Native 지원 Spring Framework 6.0기반 Java EE를 jakarta EE로 대체(javax.*에서 jakarta.*로 변경된다.) HTTP / RSocket Interface Client를 제공 Micrometer Observation API가 자동으로 구성되며, Observability지원 HTTP API 에러 처리를 위한 RFC 7807 스펙 지원 보안상 이슈로 /api/hello 와 /api/hello/ 는 더 이상 일치하지 않는다. 사용되지 않는(Depercated) 모든 코드가 제거된다..

JAVA/Spring 2023.03.26

[Spring] Java Spring?

1. Spring Framework란 무엇이며, 장점은? Spring Framework? Java언어를 사용하여 어플리케이션을 구축하기 위한 오픈소스 프레임워크이다. 간단하고 생산적인 자바 개발을 위해 개발되었다. Spring Framework의 장점? 경량성 프레임워크로써 많은 기능을 제공하고 다른 프레임워크보다 가볍고 빠르다. IoC컨테이너를 제공하여 객체의 생성, 소멸 등을 개발자 대신 수행한다. 의존성 주입(DI)를 통한 개발이 가능하다. AOP를 지원해서 공통 로직을 별도의 모듈로 분리하여 코드의 중복을 줄일 수 있다. 테스트 프레임워크와 연동하여 테스트 코드의 작성을 쉽게 할 수 있다. 2. IoC / DI란? IoC(Inversion of Control)? 객체의 생성과 관리를 개발자가 아닌..

JAVA/Spring 2023.03.23

[Spring Web Flux] Project Reactor

1. Reactor? 리액티브 스트림즈 표준 사양을 구현한 구현체 중 하나이다. 리액티브 스택에 포함되어 리액티브한 애플리케이션으로 동작하는데 있어 핵심적인 역할을 담당하는 리액티브 프로그래밍을 위한 라이브러리. 2. Reactor의 특징 리액티브 스트림즈(Reactive Streams)를 구현한 리액티브 라이브러리이다. Non-Blocking 통신을 지원한다. ※ Non-Blockong : 리액티브 프로그래밍의 핵심적인 특징, 요청 쓰레드가 차단이 되지 않는다. Publisher 타입으로 Mono[0|1], Flux[N] 이 두가지 타입을 제공한다. ※ Mono[0|1] : 0건 또는 1건의 데이터를 emit 할 수 있다. ※ Flux[N] : 여러 건의 데이터를 emit 할 수 있다. 서비스들 간의 ..

JAVA/Spring 2022.11.30