본문 바로가기

두두의 IT/Spring

(26)
[Spring Batch] 12. Multi Thread Processing 단일스레드 vs 멀티 스레드프로세스 내 특정 작업을 처리하는 스레드가 하나일 경우 단일 스레드, 여러 개일 경우 멀티 스레드로 정의할 수 있다작업 처리에 있어서 단일 스레드와 멀티 스레드의 선택 기준은 어떤 방식이 자원을 효율적으로 사용하고 성능 처리에 유리한가 하는 점이다일반적으로 복잡한 처리나 대용량 데이터를 다루는 작업일 경우 전체 소요 시간 및 성능상의 이점을 가져오기 위해 멀티 스레드 방식을 선택한다멀티 스레드 처리 방식은 데이터 동기화 이슈가 존재하기 때문에 최대한 고려해서 결정해야 한다.  스프링 배치 스레드 모델스프링 배치는 기본적으로 단일 스레드 방식으로 작업을 처리한다성능 향상과 대규모 데이터 작업을 위한 비동기 처리 및 Scale out 기능을 제공한다Local과 Remote 처리를 ..
[Spring Batch] 02. Spring Batch 시작 스프링 배치 활성화: @EnableBatchProcessing 스프링 배치가 작동하기 위해 선언해야 하는 어노테이션총 4개의 설정 클래스를 실행시키며 스프링 배치의 모든 초기화 및 실행 구성이 이루어진다스프링 부트 배치의 자동 설정 클래스가 실행됨으로 빈으로 등록된 모든 job을 검색해서 초기화와 동시에 job을 수행하도록 구성됨 스프링 배치는 프로젝트를 새로 따야 하는건가? 스프링 배치 초기화 설정 클래스BatchAutoConfiguration스프링 배치가 초기화 될 때 자동으로 실행되는 설정 클래스Job을 수행하는 JobLauncherApplicationRunner 빈을 생성SimpleBatchConfigurationJobBuilderFactory와 StepBuilderFactory 생성스프링 배치의..
Spring Batch 개요 ? Chunk 단위 - 통합. 대용량 처리할 때 지정된 데 까지는 저장이 가능Task 단위 - 분리. 한번 취소 하면 한꺼번에 다 취소됨GPP는 대용량 처리가 없을 거 같아서 Task 단위로 PoC 진행 ..키스라인은 Chunk 단위. 통신문제인지 DB 처리문제인지 디버깅하면서 체크 필요 스프링 배치를 사용할 때 로깅 역할을 하는 6개 테이블이 정해져 있음 퀴츠 + 자바 : 정확한 시간에 돌아야 할 때 사용스프링배치 + 젠킨스 서버 : 조금 딜레이 돼도 될 때, 편리함 url 파라미터로 받을 때 쿼츠를 사용 ?동일한 테이블을 바라볼 때는 시간차를 두는 게 나음 Table 컬럼명에서 Schedulerlockname은 job당 있고, Locked_by는 호스트(서버)당이다.
static / final / 상수 static 클래스에 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드 인스턴스에 속한 멤버가 아니라 클래스에 속한 멤버 상수 (Constant) 변하지 않거나 일정한 값을 가진 수나 양 프로그램이 실행과 동시에 선언하여 실행되는 동안은 변하지 않는 용도로 사용 초기값이 저장되면 최종적인 값이 되어서 프로그램 실행 도중에 수정 불가. 프로그램에서 사용하는 공통코드나, 자주사용하는 문자 또는 숫자는 필드를 따로 선언합니다. 하드코딩 방지 각각 자주사용하는 문구나 숫자를 한곳에서 볼 수 있어서 유지보수에도 유용 예약어 final로 사용 변수 선언과 동시에 초기화를 해도 되지만 선언만 해놓고 밑에서 값을 지정해 줄 수 있음 static final 상수 객체마다 저장되지 않고, 클래스에만 포함..
Builder와 Getter/Setter 1. 점층적 생성자 패턴 : 생성자로 필드를 세팅, ex) new UserInfo(userId, password); 2. 자바빈 패턴 : Setter 메서드로 필드를 세팅, ex) userInfo.set(userId); 3. 빌더 패턴 : @Builder Builder Class 객체 생성에서 주입하는 것에 대한 방식 코드에서 파라미터에 대한 정확성과 오류를 찾기 쉽게하는 어노테이션 @Builder를 사용하는 이유 코드의 가독성이 높아진다. 더욱 유연한 코드 작성에 용이하다. getter/setter를 무작정 생성하는 경우, 해당 클래스의 인스턴스 값들이 언제 어디서 변경되는지 코드상으로 명확하게 구분할 수 없어 차후 기능 변경 시 불편하다. 유동적으로 필요한 데이터만 필드에 설정할 수 있음 객체를 생성..
int, Integer 차이 + 변수(variable) : 값을 저장할 수 있는 메모리 상의 공간 + 자료형 data의 type에 따라 값이 저장될 공간의 크기와 저장 형식을 정의한 것 변수의 타입 = data type = 자료형 기본형(primitive type) 산술 연산 가능 null 로 초기화 불가능 0으로 초기화 가능 기본형에는 다음과 같은 종류가 있습니다. Wrapper Class 자료형 데이터 메모리 크기 표현 가능 범위 Boolean boolean 참/거짓 1 byte true, false Character char 문자 2 byte 모든 유니코드 문자 Byte byte 정수 1 byte -128~127 Short short 정수 2 byte -32768~32767 Integer int 정수 4 byte -214748..
DAO, DTO, VO 차이 DAO (Data Access Object) DataBase의 data에 접근하기 위한 객체로, 데이터 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행함 DataBase 접근 로직과 비지니스 로직을 분리하기 위해 사용함 DB와 연결할 Connection 까지 설정되어 있는 경우가 많음 현재 많이 쓰이는 Mybatis 등을 사용할 경우 커넥션풀까지 제공되고 있기 때문에 DAO를 별도로 만드는 경우는 드뭄 DTO (Data Transfer Object) 계층 간(Controller, View, Business, Persistent Layer, DataBase) 데이터 교환을 하기 위해 사용하는 객체(Java Beans) 로직을 가지지 않는 순수한 데이터 객체 (getter & setter 메소드만 가진 ..
JUnit5 @BeforeAll(), @AfterAll()을 쓸 때는 static이 필요함 JUnit4부터는 public을 생략해도 됨

LIST