일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Spring
- devops
- it
- Gradle
- IntelliJ
- AWS
- tool
- linux
- 요리
- jsp
- MySQL
- ReactJS
- 맛집
- springboot
- elasticsearch
- java
- Design Patterns
- Git
- Spring Boot
- Spring Batch
- Oracle
- jenkins
- redis
- db
- ubuntu
- laravel
- JVM
- Web Server
- javascript
- php
- Today
- Total
목록Spring (78)
아무거나
ItemProcessor 이전글: Spring Batch 8편 - ItemReader 작업코드: 작업코드 ItemProcessor 는 데이터를 가공하거나 필터링하는 역할을 하고 있으며 필수가 아니고 이는 Writer 부분에서도 충분히 구현이 가능 하다. 그럼에도 사용하는 것은 Reader, Writer 와는 별도의 단계로 분리되었기 때문에 비즈니스 코드가 섞이는 것을 방지 해주기 때문이다. Batch 에 비즈니스 로직을 추가할때는 가장 먼저 Processor 를 고려하는 것이 좋다. (각 계층 읽기/처리/쓰기 를 분리할 수 있는 좋은 방법) 1. ItemProcessor 란 ItemProcessor 는 Reader 에서 넘겨준 데이터 개별건을 가공/처리 해준다. 변환 Reader 에서 읽은 데이터를 원하..
ItemWriter 이전글: Spring Batch 7편 - ItemReader 작업코드: 작업코드 1. ItemWriter 란 ItemWriter 는 Spring Batch 에서 사용하는 출력 기능이며 Spring Batch 초기에는 ItemReader 와 마찬가지로 item 을 하나씩 다루었지만 Spring Batch2 와 Chunk 기반 처리의 도입으로 인하여 ItemWriter 는 item 하나를 작성하지 않고 Chunk 단위로 묶인 item list 를 다룬다. 상기 코드를 보면 ItemReader 의 read() 는 item 을 하나를 반환하지만, Writer 의 write() 는 인자로 Item List 를 받는다. 하기 이미지를 참고하자. ItemReader 를 통해 각 항목을 개별적으로 ..
ItemReader 이전글: Spring Batch 6편 - Chunk-Oriented Processing 작업코드: 작업코드 1. ItemReader 란 데이터 -> (읽기) -> ItemReader -> ItemProcessor -> ItemWriter -> (쓰기) -> 데이터 상기 프로세스와 같이 ItemReader 는 데이터를 읽어들인다. 꼭 DB의 데이터만 의미하진 않고 XML, JSON 등의 다른 형식의 데이터도 읽는다. 이외에도 Spring Batch 에서 지원하지 않는 Reader 들도 직접 만들 수 있다. Spring Batch 의 Reader 에서 읽어올 수 있는 유형은 아래와 같다. 입력 데이터에서 읽어오기 파일에서 읽어오기 DB에서 읽어오기 다른 소스에서 읽어오기 직접 커스텀한 R..
Chunk-Oriented Processing (Chunk 지향 처리) 이전글: Spring Batch 5편 - Spring Batch Scope & Job Parameter 작업코드: 작업코드 Chunk Spring Batch 의 Chunk 란 각 커밋 사이에 처리되는 row 수를 의미한다. 즉, 한 번에 하나씩 데이터를 읽어 Chunk 라는 덩어리를 만든 뒤, Chunk 단위로 트랜잭션을 다루는 것 을 Chunk 지향 처리라고 한다. 또한 Chunk 단위로 트랜잭션을 수행하기 때문에 실패한 경우엔 해당 Chunk 만큼만 롤백 이 되며, 이전에 커밋된 트랜잭션 범위까지는 반영된다. 상기 이미지의 프로세스는 아래와 같다. Reader 가 누적해서 읽어 Chunk Size 를 맞춤 Processor 에선 ..
Scope & Job Parameter 이전글: Spring Batch 4편 - Spring Batch Job Flow 작업코드: 작업코드 Job Parameter, Scope 외부/내 에서 파라미터를 받아 처리할 때 해당 파라미터를 Job Parameter 라고 한다. Job Parameter 를 사용하려면 항상 Scope 를 선언해야 하는데 Scope 는 크게 @StepScope 와 @JobScope 가 있다. 사용법은 아래와 같다. @Value("#{jobParameters[파라미터명]}") 그 외에도 jobExecutionContext, stepExecutionContext 등 에도 SpEL 로 사용할 수 있다. @JobScope 에선 stepExecutionContext 는 사용할 수 없고, j..
SpEL(Spring Expression Language) 정의 런타임시 객체 그래프를 조회하고 조작하는 강력한 표현언어이다. EL(Unified EL) 과 비슷하지만 추가적인 기능을 제공 OGNL, MVEL, JBOss EL 등 자바에서 사용할 수 있는 여러 EL이 있지만 SpEL은 모든 스프링 프로젝트 전반에 걸쳐서 사용 가능 스프링 3.0부터 지원 가능 기능 리터럴 표현식 (Literal Expression) Boolean 및 관계 연산자 (Boolean and Relational Operator) 정규식 (Regular Expression) 클래스 표현식 (Class Expression) 속성, 배열, 목록, 맵 액세스 (Accessing Properties, arrays, lists, maps)..
Spring Batch Job Flow 이전글: https://bkjeon1614.tistory.com/739 작업코드: 작업코드 실제 비지니스 로직을 처리하는 기능은 Step 에 구현되어 있다. 즉, Batch 로 실제 처리하고자 하는 기능과 설정을 모두 포함한다. Job 내부의 Step 들 간에 순서 또는 처리 프로세스를 제어하기 위해 여러 Step 들이 어떻게 관리해야 하는지 차근차근 알아보자. Next next() 는 순차적으로 Step 들을 연결시킬 때 사용 즉, step1 -> step2 -> ... 와 같이 하나씩 실행할 때 사용하면 좋다. 샘플코드를 작성해보자. [NextJobConfiguration.java] package com.example.job; import org.springfr..
POJO (=Plain Old Java Object) POJO 란 마틴파울러가 만들어낸 용어이며 당시 인기를 끌고있던 EJB처럼 복잡하고 제한이 많은 기술을 사용하는 것보다는 자바의 단순한 오브젝트를 이용해 애플리케이션의 비즈니스 로직을 구현하는 편이 낫다고 생각하여 만듬 또한 단순히 "간단한 자바오브젝트를 사용" 한다는 말보다는 "POJO 방식의 기술을 사용" 한다는 말이 첨단기술을 쓰는 것처럼 느껴진다는 심리도 이용함 POJO 의 조건 특정 규약에 종속되지 않는다 자바 언어와 꼭 필요한 API 외에는 종속되지 않아야 한다. (EJB2, 스트럿츠1 과 같이 특정 규약을 따라 비즈니스 컴포넌트를 만들어야 하는 경우는 POJO가 아님) 특정 환경에 종속되지 않는다 특정 환경에 종속되게 만들면 안되고 환경에..
Spring Boot Graceful Shutdown 애플리케이션을 배포(ex: Rolling Deploy) 또는 특정 케이스로 종료할 때 여러가지 방법이 존재한다. 다만 케이스별로 정상적은 종료를 위하여 반드시 정상 종료 프로세스는 꼭 필수이다. 그러므로 애플리케이션을 정상적으로 종료할 수 있게 도와주는 Graceful Shutdown 에 대하여 알아보자. 리눅스 KILL 명령 리눅스 환경에서 프로세스를 종료할 때 KILL 을 사용하고 옵션에 따라 종료시키는 보편적으로 사용하는 동작은 아래와 같다. -9: 작업중인 모든 데이터를 저장하지 않고 프로세스를 종료하기 때문에 저장되지 않는 데이터는 소멸된다. (강제종료) -15: 하던 작업을 모두 안전하게 저장한 후 프로세스를 종료한다. (정상종료) Grac..
Exception 을 개선하다가 예전에 포스팅을 작성해야지 하면서 깜박했던 부분이 있어 다시 작성하게되었다. @ControllerAdvice 를 통한 Global Exception Handler 처리 에러 객체 생성 [ErrorResponse.java] import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; import org.springframework.validation.BindingResult; import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException; import com.example.bkjeon.enum..