분류 전체보기75 [Spring] Spring Batch Job 등록부터 실행까지(1) 들어가기 전 이전 글 에서 Spring Batch 실행을 위한 프로젝트 환경 구성 및 예제 Job 을 작성 후 실행해 봤습니다. 그렇다면 Spring Batch 는 Job 을 어떤 식으로 생성하고 실행시키는지에 대해 이번 글을 통해서 알아 보도록 하겠습니다. Step 다음과 같이 Tasklet 으로 구성된 Step 을 Bean 으로 등록합니다. @Bean public Step step(JobRepository jobRepository, PlatformTransactionManager transactionManager) { return new StepBuilder("step1", jobRepository) .tasklet(tasklet(), transactionManager) .build(); } 먼저 S.. 2024. 1. 22. [Spring] Spring Batch 시작하기 01 Spring Batch 를 학습하기 위한 시리즈 글로 Spring Batch 5.1.0 버전을 기반으로 작성합니다. 프로젝트 환경 Spring Batch 를 실습하기 위해 먼저 프로젝트부터 생성하겠습니다. 다음과 같은 버전으로 프로젝트를 구성했습니다. Gradle(8.2.1) Spring Boot(3.2.1) Java(17) MySql(8.0.23) 또한 실습에 필요한 의존성은 다음과 같습니다. Spring-Data-JPA(3.2.1) Spring-Batch(5.1.0) Lombok(1.18.30) MySql-Connector(8.1.0) 프로젝트 생성 시 Spring Initializr 를 통해 필요한 의존성을 선택하여 생성하면 build.gralde 파일은 다음과 같습니다. plugins { id '.. 2024. 1. 14. [Java] 데이터 병렬 처리(Java 8) Java 8 자바 8은 스트림 객체와 람다 표현식과 같은 Feature들을 기반으로 함수형 프로그래밍 스타일을 지원합니다. 병렬 스트림은 스트림 API를 기반으로 하여 작성되어 훨씬 편리하게 사용할 수 있으며 람다 표현식 및 함수형 인터페이스를 활용하여 코드를 간결하게 작성할 수 있습니다. 자바에서 지원해주는 병렬 스트림에 대해서 알아 보겠습니다. 병렬 스트림 출처 병렬 스트림은 내부적으로 스트림의 요소를 여러 청크(chunk)로 Fork/Join 프레임워크를 사용하여 분할하고 이 청크들을 각각의 스레드에서 병렬로 처리하는 방식으로 동작합니다. 여러 청크로 분할하여 각 스레드가 독립적으로 작업을 수행하고 그 결과를 나중에 모아서 최종 결과를 생성함으로써 멀티코어 프로세서를 활용하여 작업을 효율적으로 분산.. 2024. 1. 8. [Java] 데이터 병렬 처리(Java 5, 7) 병렬 처리 병렬 처리(Parallel Operation)란 멀티 코어 환경에서 하나의 큰 작업을 여러 개의 작은 작업으로 나누어 각각의 코어가 병렬적으로 작업을 처리하는 것을 의미합니다. 기존의 직렬 처리(Sequential Processing)에서는 작업이 순차적으로 진행되어 한 번에 하나의 작업만 처리할 수 있었지만 병렬 처리는 여러 작업을 동시에 실행함으로써 전체적인 성능을 향상시킬 수 있습니다. 동시성(Concurrency)과 병렬성(Parallelism) 출처 동시성은 한 번에 많은 일을 처리하는 것이고 병렬성은 많은 일을 동시에 수행하는 것 입니다. -롭 파이크(Robert Pike)- 동시성 동시성은 여러 작업이 시간의 흐름 상에서 서로 겹치게 실행되는 개념입니다. 즉 동시성이란 독립적인 작.. 2023. 12. 31. [Spring] @Transactional 속성 @Transactional 스프링은 @Transactional 어노테이션을 활용하여 트랜잭션 관리를 단순화합니다. 이는 트랜잭션의 관리를 설정이나 어노테이션과 같은 외부 수단을 통해 선언하는 방식인 선언적 트랜잭션(Declarative Transaction) 방식 중 하나입니다. 스프링은 선언적 트랜잭션을 처리하기 위해 Spring AOP를 활용하여 적용 대상 로직 전후에 트랜잭션 관련 기능을 삽입함으로써 핵심 비즈니스 로직과 트랜잭션 관리를 분리할 수 있습니다. 동작 스프링에서는 트랜잭션을 관리하기 위해 PlatformTransactionManager 이라는 추상화된 인터페이스를 제공합니다. @Transactional 이 적용된 메소드가 호출될 경우 트랜잭션을 시작하고 실행 결과에 따라 Commit 또.. 2023. 12. 24. [Spring] Spring Batch란? 최근 회사 프로젝트에서 스프링 배치를 활용하여 모바일 Push 알림 관련 배치/온라인 작업을 진행했습니다. 비교적 간단한 작업이라 큰 어려움은 없었지만 처음 사용해보는 스킬이기 때문에 공부용으로 해당 글을 작성하게 됐습니다. Batch Application 배치 애플리케이션이란 대량의 데이터를 처리하거나 반복적인 작업을 수행하는 목적을 가지는 애플리케이션을 의미합니다. 주기적으로 반복 되는 작업을 자동으로 수행하며 일련의 단계로 구성되어 있는 작업들을 수행합니다. 위와 같은 작업들은 배치 애플리케이션으로 따로 분리해서 관리해야 하는데는 다음과 같은 중요한 이유가 있습니다. 일반적으로 사용되는 웹 애플리케이션은 실시간으로 사용자와 상호 작용 하기 위한 비즈니스 로직들을 수행합니다. 이를 위해 네트워크 I/.. 2023. 12. 18. [Spring] Spring Security Authentication이란? Authentication public interface Authentication extends Principal, Serializable { Collection 2023. 12. 10. [Spring] Spring Security SecurityFilter란? SecurityFilterChain 출처 웹 요청이 발생하면 서블릿은 DelegatatingFilterProxy를 통해 FilterChainProxy에 설정 된 필터들을 실행시킵니다. 하지만 각 요청에 적용 될 필터 체인에 대한 유효성 검증이 필요한데 이를 관리하기 위해서는 SecurityFilterChain을 통해 해당 요청에 적용되는 필터 체인이 있는지 결정할 수 있게끔 서포트합니다.(in order to decide whether it applies to that request.) 이를 위해 SecurityFilterChain의 표준 구현체로 DefaultSecurityFilterChain을 사용하며 발생한 요청이 RequestMatcher에 일치하면 Spring Security에 정의된 필터를 반.. 2023. 12. 3. [Library] Assertions Assertions Assertions 는 Java 언어를 위한 라이브러리로 런타임 시점에 JDK 타입 검증 기능을 제공합니다. AssertJ에 영감을 받아 제작했습니다. 2023년 11월 27일 기준 Maven Central Repository 에 1.0.0 버전으로 배포 되어 있습니다. 시작하기 Maven io.github.ones1kk assertions 1.0.0 Gradle implementation group: 'io.github', name: 'assertions', version: '1.0.0' Gradle(short) implementation 'io.github.ones1kk:assertions:1.0.0' 먼저 위와 같이 Maven, Gradle 두 가지 Build Tool을 통해 A.. 2023. 11. 27. 이전 1 2 3 4 5 ··· 9 다음