Spring 46

[Spring Security] OAuth 2.0 개요

개요 이번 게시글에서는 OAuth 2.0에 대해 간략히 알아보겠습니다. OAuth 2.0을 이해하기 위해서는 아래의 개념을 알아야 하며 각각의 개념을 간략히 정리하겠습니다. 인증과 인가의 차이 OAuth 2.0 개념 OAuth 2.0 구성 요소 OAuth 2.0 Client OAuth 2.0 토큰 OAuth 2.0 권한부여 유형 1. 인증 vs 인가 OAuth 2.0 설명에 앞서 인증(Authentication)과 인가(Authroization)를 확실히 구분한 상태로 읽으시면 좋을 것 같습니다. 인증 (Authentication) 클라이언트가 요청하는 주체가 자기 자신임을 입증하는 절차 ex) 로그인 인가 (Authorization) 인증받은 사용자가 어떤 권한을 갖고 있는지 체크하는 절차 Role에 ..

Spring 2023.12.21

[Spring Batch] Skip, Retry 정책

1. ItemReader Skip 기능만 제공 Retry 기능은 제공하지 않음 전체적인 흐름 Step 기능이 실행되고 RepeatTemplate 통해 반복해서 ChunkOrientedTasklet 실행시킴 ChunkOrientedTasklet은 FaultTolerantChunkProvider를 통해 Item을 읽어옴 FaultTolerantChunkProvider는 내부적으로 RepeatTemplate을 통해 ItemReader를 통해 한 건의 데이터를 반복적으로 읽어옴 예외가 발생하지 않으면 반복적으로 Item을 읽어옴 예외가 발생할 경우 Skip 기능이 설정되었는지 확인 Skip 기능이 활성화되지 않았거나 SkipLimit 횟수를 초과했을 경우 NonSkippableReadException 예외 발생..

Spring 2023.09.14

[Spring Batch] @JobScope,@StepScope

@JobScope, @StepScope @JobScope과 @StepScope 어노테이션이 붙은 Bean 선언 시 내부적으로 Bean의 Proxy 객체가 생성 두 어노테이션 모두 Bean의 Class Type 프록시 생성 @Scope(value= "job", proxyMode = ScopedProxyMode.TARGET_CLASS) @Scope(value = "step", proxyMode = ScopedProxyMode.TARGET_CLASS) Spring Framework의 핵심인 AOP를 활용해 Job 실행 시 Proxy 객체가 실제 Bean을 호출해서 해당 메서드를 실행시키는 구조 JdkDynamicAopProxy 즉, JobScope와 StepScope는 실제 대상이 되는 Bean을 동록 및 해..

Spring 2023.07.19

[Spring Batch] SimpleFlow 아키텍처

개요 FlowJob을 구성할 때 이해도 향상을 위해 SimpleFlow 아키텍처를 알아보겠습니다. FlowJob 아키텍처는 아래 글을 참고해 주세요. https://jaimemin.tistory.com/2302 [Spring Batch] FlowJob 아키텍처 개요 Job의 구현체는 아래와 같이 두 가지가 존재합니다. SimpleJob FlowJob SimpleJob 아키텍처는 https://jaimemin.tistory.com/2300에서 다루었고 이번 게시글에서는 FlowJob 아키텍처를 간단히 정리해보겠습니다 jaimemin.tistory.com SimpleFlow SimpleFlow는 start 메서드에 넘겨지는 파라미터에 따라 StateType 객체가 달라집니다. start, next, from..

Spring 2023.07.17

[Spring Batch] FlowJob 아키텍처

개요 Job의 구현체는 아래와 같이 두 가지가 존재합니다. SimpleJob FlowJob SimpleJob 아키텍처는 https://jaimemin.tistory.com/2300에서 다루었고 이번 게시글에서는 FlowJob 아키텍처를 간단히 정리해보겠습니다. [Spring Batch] SimpleJob 아키텍처 SimpleJob 간략 흐름 SimpleJob을 실행하면 Job->Step->Tasklet 순서로 실행이 되고 각 과정마다 메타데이터가 생성되어 DB에 저장이 됩니다. SimpleJob 아키텍처 1. JobLauncher가 JobParameters를 받고 JobInstance 신규 jaimemin.tistory.com FlowJob의 흐름 1. 처음에는 SimpleJob과 동일하게 시작합니다. ..

Spring 2023.07.11

[Spring Batch] TaskletStep 아키텍처

TaskletStep 간단 요약 1. Job이 Step을 실행 2. Step은 RepeatTemplate 내 Tasklet을 실행 3. Tasklet 내 비즈니스 로직 수행 후 예외 발생 여부에 따른 조건 분기 3.1 예외 발생 시 반복문 종료 및 Step 종료 4. 정상적으로 비즈니스 로직이 수행될 경우 RepeatStatus에 따른 조건 분기 4.1 RepeatStatus가 FINISHED일 경우 반복문 종료 및 Step 종료 4.2 RepeatStatus가 CONTINUABLE일 경우 2번으로 돌아가서 다시 Tasklet 실행 TaskletStep 상세 1. SimpleJob이 각각의 Step들을 실행합니다. SimpleJob 아키텍처는 https://jaimemin.tistory.com/2300 ..

Spring 2023.07.11

[Spring Batch] SimpleJob 아키텍처

SimpleJob 간략 흐름 SimpleJob을 실행하면 Job->Step->Tasklet 순서로 실행이 되고 각 과정마다 메타데이터가 생성되어 DB에 저장이 됩니다. SimpleJob 아키텍처 1. JobLauncher가 JobParameters를 받고 JobInstance 신규 생성 여부 및 JobInstance 실행 가능 여부를 파악합니다. JobParameters가 동일한 JobInstance가 존재한다면 해당 JobInstance를 기준으로 실행 가능 여부를 파악 이미 생성된 JobInstance의 배치 상태가 COMPLETED라면 JobRestartException 발생하며 실행 불가 JobInstance가 존재하지 않는다면 JobInstance를 신규 생성 SimpleJobLauncher의 ..

Spring 2023.07.10

[Spring Batch] 스프링 배치 도메인 정리

Job 배치 계층 구조에 최상위 개념으로 하나의 배치 작업 자체를 의미 ex) "elasticsearch에 저장된 로그를 RDB로 옮기는 배치" -> Job 배치 작업을 어떻게 구성하고 실행할 것인지 전체적으로 설정하고 명세해 놓은 객체 반드시 한 개 이상의 Step을 구성 Spring Batch가 기본 구현체 제공 SimpleJob FlowJob JobInstance Job이 실행될 때 생성되는 Job의 논리적 실행 단위 (실행되는 시점) 하루에 한 번씩 배치 Job이 실행될 경우 매일 실행되는 각각의 Job을 JobInstance로 표현 따라서, Job과 JobInstance는 1:N 관계 JobInstance 생성 및 실행 기준 Job과 JobParameter 조합이 신규일 경우 새로운 JobIns..

Spring 2023.07.06

[Spring] 트랜잭션 전파 정리

개요 트랜잭션이 이미 진행 중인데 추가로 트랜잭션을 수행할 때 추가 트랜잭션이 어떻게 동작할지 결정하는 것을 트랜잭션 전파 혹은 Transaction Propagation이라고 합니다. 이번 게시글에서는 스프링에서 제공하는 트랜잭션 전파에 대해 간단히 정리해 보겠습니다. 이해를 돕기 위해 아래 게시글을 먼저 보고 오는 것을 추천드립니다. https://jaimemin.tistory.com/2271 @Transactional 동작 원리 용어 정리 트랜잭션 관리에는 크게 두 가지 방법이 있습니다. 선언 방식의 트랜잭션 관리 프로그래밍 방식의 트랜잭션 관리 선언적 트랜잭션 관리 @Transactional 애노테이션 하나만 선언해서 편리 jaimemin.tistory.com 트랜잭션 전파 옵션 스프링 프레임워크..

Spring 2023.04.30

[Spring] @Transactional 적용 시 주의 사항

개요 앞선 포스팅에서 @Transactional 애노테이션 적용 시 프록시 방식의 AOP를 통해 트랜잭션이 적용되는 내용을 정리했습니다. https://jaimemin.tistory.com/2271 @Transactional 동작 원리 용어 정리 트랜잭션 관리에는 크게 두 가지 방법이 있습니다. 선언 방식의 트랜잭션 관리 프로그래밍 방식의 트랜잭션 관리 선언적 트랜잭션 관리 @Transactional 애노테이션 하나만 선언해서 편리 jaimemin.tistory.com 이번 게시글에서는 @Transactional 적용 시 주의할 사항을 정리해 보겠습니다. @Transactional 적용 시 주의 사항 @Transactional을 적용 시 주의할 점이 크게 세 가지가 있습니다. 트랜잭션을 적용하기 위해서는..

Spring 2023.04.18