본문 바로가기

분류 전체보기72

『Spring Batch』 스프링 배치 반복 및 오류 제어 Repeat  Spring Batch는 얼마나 작업을 반복해야 하는지 알려 줄 수 있는 기능을 제공한다. 특정 조건이 충족될 때까지 Job 또는 Step을 반복하도록 설정할 수 있으며, 스프링 배치에서는 Step의 반복과 Chunk 반복을 RepeatOperation을 사용해서 처리하고 있다. 기본 구현체로는 RepeatTemplate를 제공한다. 반복을 종료할 것인지 여부를 결정하는 세 가지 항목  RepeatStatus스프링 배치의 처리가 끝났는지 판별하기 위한 열거형(enum)CONTINUABLE: 작업이 남아 있음FINISHED: 더 이상의 반복 없음CompletionPolicyRepeatTemplate의 iterate 메소드 안에서 반복을 중단할지 결정한다.실행 횟수 또는 완료 시기, 오류 발생.. 2024. 12. 10.
『Spring Batch』 스프링 배치 메타 데이터 스키마 스프링 배치의 실행 및 관리를 위한 목적으로 여러 도메인들(Job, Step, JobParameters..)의 정보들을 저장, 업데이트, 조회할 수 있는 메타 데이터를 스키마로 제공한다. 데이터베이스와 연동할 경우 필수적으로 메타 테이블이 생성되어야 하는데 이와 관련된 스키마 설정을 우선 알아보자.  스키마 생성 설정 스프링 배치 메타데이터 스키마를 사용하는 예제 코드 및 예시를 보자.  Gradle 의존성 application.yaml Java Config 1. yaml에서 설정한 initialize-schema=ALWAYS 설정으로 인해 애플리케이션 시작 시 스프링 배치에 필요한 메타 데이터 테이블들이 H2 메모리 DB에 자동 생성된다.2. Java Config에서 @EnableBatchProcess.. 2024. 12. 9.
『Spring Batch』 스프링 배치 도메인 이해 스프링 배치는 Job을 중심으로 JobInstance, JobExecution, Step, StepExecution, 그리고 이들의 상태 정보인 ExecutionContext 등을 통해 배치 작업을 수행하고 관리할 수 있는 구조를 제공한다.  도메인 객체들의 관계를 이해하면 배치 실행 흐름에서 발생하는 상태 변화와 재시작 로직을 보다 명확히 파악할 수 있다. 도메인 객체들을 자세히 살펴보기 전에 간략하게 정리한 표를 우선적으로 보겠다.도메인 객체설명Job 배치 작업 단위 JobInstance Job의 특정 파라미터로 실행한 인스턴스 JobParameter JobInstance를 식별하는 실행 파라미터 JobExecution JobInstance 별 실제 실행 정보 Step Job을 구성하는 실행 단위 S.. 2024. 12. 7.
프레임워크와 라이브러리의 차이 프레임워크란 프레임워크(Framework)란 개발자가 소프트웨어를 개발함에 있어 구현에 드는 시간을 단축하고 재사용성을 높이기 위해 미리 정해진 구조나 설계 패턴을 제공하는 ‘뼈대’이다.  이는 일련의 클래스 묶음이나 템플릿을 라이브러리 형태로 제공하는 것으로 개발자가 해당 구조를 기반으로 애플리케이션을 구성하고 확장해나가게 된다.  대표적으로 IoC(Inversion of Control, 제어의 역전) 개념이 적용되어 있어 프로그램의 전체적인 흐름(Flow)을 프레임워크가 주도하고 개발자는 필요한 부분을 확장하거나 구현하는 방식으로 개발을 진행한다.  특징 프레임워크는 정형화된 개발 방식과 구조를 제시한다. 예를 들어 Spring Framework에서는 애플리케이션 컨텍스트나 Bean 설정 방식을 지키.. 2024. 12. 6.
『MVC』 Bean Validation RESTful API를 개발할 때 클라이언트로부터 전달받은 데이터의 유효성 검증은 필수적인데 Spring Framework에서는 Bean Validation이란 기능을 지원한다.  Bean Validation은 어노테이션을 활용하여 객체의 프로퍼티 값이 특정 조건을 만족하는지 검증하는 프레임워크다. Spring Boot에서는 기본으로 지원한다.@Valid, Java에서 지원하는 어노테이션@Validated, Spring에서 지원하는 어노테이션 -> 내부에 groups 기능을 포함하고 있다.  내부 구조Bean Validation은 Java 표준 스펙(JSR 380)으로 다음과 같은 주요 구성 요소로 이루어져 있다.  Constraint Annotations @NotNull, @Size 등과 같이 필드에 .. 2024. 12. 3.
『Java』 Priority Queue 우선순위 큐 일반적인 큐(Queue)는 먼저 들어간 데이터가 먼저 나오는 FIFO(First In First Out) 구조다. 반면에 우선순위 큐(Priority Queue)는 들어가는 순서와 상관없이 우선순위가 높은 데이터가 먼저 나오는 자료구조다.  우선순위 큐 내부의 엘리먼트들은 새로운 요소가 추가되거나 기존 요소가 제거될 때마다 정렬된다. 우선순위 큐는 힙(Heap) 자료구조를 통해 구현되며 다른 자료구조를 통해서도 구현될 수 있다.  선언 방법Java에서 PriorityQueue는 기본적으로 최소 힙(min-heap) 구조로 작은 숫자가 먼저 나오도록 설계되어 있다. 높은 숫자(큰 숫자)가 먼저 나오도록 하려면 Collections.reverseOrder()를 사용하여 최대 힙(max-heap).. 2024. 12. 2.
『Network』 HTTP Only 쿠키 웹 애플리케이션 개발에서 쿠키는 클라이언트와 서버 간의 상태 정보를 유지하는 역할을 한다. 위와 같은 특성 때문에 쿠키에 대한 관리를 고려하지 않는다면 크로스 사이트 스크립팅(XSS) 공격에 노출될 수 있다. 이러한 보안 위협을 최소화하기 위해 HTTP Only 쿠키를 사용하는 것이 권장된다. 일반 쿠키와 HTTP Only 쿠키의 간단한 차이점을 알아보고 Spring Framework에서 HTTP Only 쿠키를 어떻게 사용하는지 예제 코드를 통해 살펴보자.  쿠키란?쿠키는 클라이언트의 브라우저에 저장하는 작은 데이터 조각으로 이후의 HTTP 요청에서 해당 정보를 활용하여 상태를 유지하는 데 사용된다.일반 쿠키HTTP Only 쿠키 클라이언트 측에서 JavaScript와 같은 스크립트를 통해 접근, 수정.. 2024. 12. 1.
『Java』 배열과 리스트의 차이점 List와 Array 타입 모두 표면적으로는 비슷한 기능을 제공하지만 내부적으로 메모리에 접근하는 방식의 차이로 인해 사용 용도가 다르다. 결론적으로 Array 타입은 메모리에 연속적으로 저장되며 정적인 데이터 처리 어울리고, List 타입은 메모리에 비연속적으로 저장되며 동적인 데이터 처리에 어울린다.  배열고정된 길이: 배열은 초기 선언 시 길이가 고정되며 이후에는 크기를 변경할 수 없다.런타임 수정의 어려움: 실행 중에 크기를 변경하거나 요소를 삽입/삭제하는 것이 어렵기 때문에 정해진 데이터를 다룰 때 적합하다.연속적인 메모리 저장: 메모리에 연속적으로 저장되므로 탐색 속도가 빠르다.정적인 데이터에 적합: 삽입/삭제가 거의 없는 정적인 데이터 처리에 어울린다. 시간 복잡도연산시간 복잡도설명접근 (A.. 2024. 11. 29.
『Network』 쿠키, 세션 쿠키쿠키는 클라이언트(브라우저)의 로컬에 저장되는 작은 데이터 파일로 키와 값의 쌍으로 이루어져 있다. 서버에서 생성되어 클라이언트로 전송되며 클라이언트는 이를 저장하고 필요시 다시 서버로 전송한다.  만료 시간을 지정할 수 있어 브라우저가 종료되어도 쿠키가 유지될 수 있다. 사용자가 별도의 요청을 하지 않아도 브라우저가 자동으로 서버에 쿠키를 전송한다.  동작 원리클라이언트 요청: 클라이언트가 서버에 페이지를 요청한다.쿠키 생성 및 전달: 서버는 필요한 경우 쿠키를 생성하여 HTTP 응답 헤더에 포함시켜 클라이언트로 전송한다.쿠키 저장: 클라이언트는 수신한 쿠키를 로컬에 저장한다.쿠키 자동 전송: 이후 동일한 도메인에 대한 요청 시 브라우저는 자동으로 쿠키를 HTTP 요청 헤더에 포함하여 서버로 전송한.. 2024. 11. 29.