- [ Dev/spring-batch ][Spring Batch] 5. 배치 초기화 설정2024-06-20 22:19:52스프링 배치 초기화 설정스프링 배치를 시작할 때 스프링이 자동으로 초기화 하는 영역이 있다.어떤 작업을 하는지 간단히 알아보고, 디버깅을 통해 직접 어떻게 동작하는지 알아보자우선 아래의 개념들을 알고 있어야 한다. 1. JobLauncherApplicationRunnerSpring Batch 작업을 시작하는 ApplicationRunner로서 BatchAutoConfiguration에서 생성됨스프링 부트에서 제공하는 ApplicationRunner의 구현체로 어플리케이션이 정상적으로 구동되자 마자 실행됨ApplicationRunner는 스프링 부트가 환경 구성을 모두 마친 뒤에 곧바로 실행하는 클래스이다.기본적으로 빈으로 등록된 모든 job을 실행시킨다. 2. Batch PropertiesSpring B..
- [ Dev/spring-batch ][Spring Batch] 4. Step 관련 도메인(Step, StepExecution, StepContribution)2024-06-15 12:17:00Step기본 개념Job을 구성하는 독립적인 하나의 단계로서 실제 배치 처리를 정의하고 컨트롤하는 데 필요한 모든 정보를 가지고 있는 도메인 객체단순한 단일 태스크 뿐 아니라 입력과 처리 그리고 출력과 관련된 복잡한 비즈니스 로직을 포함하는 모든 설정을 할 수 있다.배치작업을 어떻게 구성하고 실행할 것인지 Job의 세부 작업을 Task 기반으로 설정하고 명세해 놓은 객체모든 Job은 하나 이상의 Step으로 구성됨 기본 구현체Step은 인터페이스이며, 이를 구현한 기본 구현체들은 아래와 같다.`TaskletStep`: 가장 기본이 되는 클래스로서 Tasklet 타입의 구현체들을 제어한다.`PartitionStep`: 멀티스레드 방식으로 Step을 여러 개로 분리해서 실행한다.`JobStep`: Step 내..
- [ Dev/spring-batch ][Spring Batch] 3. Job 관련 도메인(Job, JobInstance, JobParameter, JobExecution)2024-06-11 01:13:50들어가기 전에!해당 게시글은 인프런 정수원님의 Spring Batch 강의를 듣고 추후 복기하고자 공부한 내용을 가볍게 정리한 것입니다.문제가 될 시 삭제하겠습니다. 또한 현재 스프링 배치의 최신버전과 상이한 내용이 있습니다.해당 내용 참고해서 읽어주시면 감사하겠습니다! Job이란?기본 개념배치 계층 구조에서 가장 상위에 있는 개념으로서 하나의 배치 작업 자체를 의미한다.예를 들어, "API 서버의 접속 로그 데이터를 통계 서버로 옮기는 배치"가 Job이다.Job 구성(Configuration)을 통해 생성되는 객체 단위로서 배치 작업을 어떻게 구성하고 실행할 것인지 전체적으로 설정하고 명세해 놓은 객체배치 Job을 구성하기 위한 최상위 인터페이스이며 스프링 배치가 기본 구현체를 제공여러 Step을 포함..
- [ Dev/spring-batch ][Spring Batch] 2. 스프링 배치 시작2024-06-08 19:26:54들어가기 전에!해당 게시글은 인프런 정수원님의 Spring Batch 강의를 듣고 추후 복기하고자 공부한 내용을 가볍게 정리한 것입니다. 문제가 될 시 삭제하겠습니다. 또한 현재 스프링 배치의 최신버전과 상이한 내용이 있습니다. 해당 내용 참고해서 읽어주시면 감사하겠습니다! 스프링 배치 개발 환경 설정개발 환경JDK 1.8 이상Spring Boot 2.7.5DB - H2, MySQLMaven스프링 부트에서는 아래와 같이 라이브러리를 추가해주면 스프링 배치를 사용할 수 있다. org.springframework.boot spring-boot-starter-batch 스프링 배치 활성화`@EnableBatchProcessing`: 스프링 배치가 작동하기 위해 선언해야 하는 어노테이션필요한 빈들을 ..
- [ Dev/spring-core ][Spring] 예외 처리하기(체크/언체크), 트랜잭션 처리에 따른 예외 종속 해결 2편2024-04-02 09:16:26인프런 강의 인프런 김영한님의 Spring Boot 강의 시리즈를 듣고 Spring 프레임워크의 방대한 기술들을 복기하고자 공부한 내용을 가볍게 정리한 것입니다. 문제가 될 시 삭제하겠습니다. 해당 프로젝트에서 배우는 내용 섹션 6 | 스프링과 문제 해결 - 예외 처리, 반복 앞선 1편에서 트랜잭션 사용에 따른 특정 기술에 종속적인 문제로 체크 예외를 해결할 수 없음에도 불구하고 서비스, 컨트롤 단까지 예외를 의존해야 하는 문제가 있었다. 또한 JDBC 기술 사용으로 반복되는 코드가 있다. 이번에 체크 예외를 언체크 예외로 변환하기, 스프링의 예외 추상화, 스프링의 예외 변환기, JdbcTemplate 사용으로 반복되는 코드를 없애고, 특정 기술에 의존해야 하는 코드를 없애 유연한 코드가 되도록 수정해보..
- [ Dev/spring-core ][Spring] 예외 처리하기(체크/언체크), 트랜잭션 처리에 따른 예외 종속 해결 1편2024-04-01 15:46:58인프런 강의 인프런 김영한님의 Spring Boot 강의 시리즈를 듣고 Spring 프레임워크의 방대한 기술들을 복기하고자 공부한 내용을 가볍게 정리한 것입니다. 문제가 될 시 삭제하겠습니다. 해당 프로젝트에서 배우는 내용 섹션 5 | 자바 예외 이해 먼저 트랜잭션으로 인한 특정 기술의 예외 의존성 문제를 해결하기 위해 자바 예외에 대해서 알아보도록 하자 예외 계층 Object: 예외도 객체이다. 모든 객체의 최상위 부모는 Object이므로 예외의 최상위 부모도 Object이다. Throwable: 최상위 예외이다. 하위에 Exception과 Error가 있다. Error: 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불가능한 시스템 예외이다. 상위 예외를 catch로 잡으면 하위 예..
- [ Dev/spring-core ][Spring] Spring Transaction(Manager - 추상화/동기화, Template, AOP)2024-03-29 23:58:33인프런 강의 인프런 김영한님의 Spring Boot 강의 시리즈를 듣고 Spring 프레임워크의 방대한 기술들을 복기하고자 공부한 내용을 가볍게 정리한 것입니다. 문제가 될 시 삭제하겠습니다. 해당 프로젝트에서 배우는 내용 섹션 4 | 스프링과 문제 해결 - 트랜잭션 문제점들 애플리케이션의 구조 프레젠테이션 계층 UI와 관련된 처리 담당 웹 요청과 응답 사용자 요청을 검증 주 사용 기술: 서블릿과 HTTP 같은 웹 기술, 스프링 MVC 서비스 계층 비즈니스 로직을 담당 주 사용 기술: 가급적 특정 기술에 의존하지 않고, 순수 자바 코드로 작성 데이터 접근 계층 실제 데이터베이스에 접근하는 코드 주 사용 기술: JDBC, JPA, File, Redis, Mongo... 이중에서 가장 중요한 곳은 비즈니스 ..
- [ Dev/spring-core ][Spring] Transcation, ACID, DB-LOCK2024-03-20 16:59:55인프런 강의 인프런 김영한님의 Spring Boot 강의 시리즈를 듣고 Spring 프레임워크의 방대한 기술들을 복기하고자 공부한 내용을 가볍게 정리한 것입니다. 문제가 될 시 삭제하겠습니다. 해당 프로젝트에서 배우는 내용 섹션 3 | 트랜잭션 이해 섹션 3 | 트랜잭션 이해 트랜잭션 - 개념 이해 데이터를 단순히 파일에 저장해도 되지만 데이터베이스에 저장하는 이유는 여러가지가 있지만, 가장 대표적인 이유는 바로 데이터베이스는 트랜젹션이라는 개념을 지원하기 때문이다. 트랜잭션이란 데이터베이스에서 트랜잭션은 하나의 거래를 안전하게 처리하도록 보장해주는 것을 의미한다. 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다...