분류 전체보기 119

Spring Batch 테이블 의미

🎈Job 관련 테이블 BATCH JOB INSTANCE job 이 실행될 때 JobInstance 정보가 저장되며 job_name과 job_key를 키로 하여 하나의 데이터가 저장 동일한 job_name과 job_key로 중복 저장될 수 없다 JOB_INSTANCE_ID 고유하게 식별할 수 있는 기본 키 VERSION 업데이트 될 때 마다 1씩 증가 JOB_NAME job을 구성할 때 부여하는 job 의 이름 JOB_KEY job_name 과 jobParameter 를 합쳐 해상한 값을 저장 BATCH_JOB_EXEXUTION job 의job의 실행정보가 저장되며 job 생성 , 시작 , 종료 시간 , 실행상태 , 메시지 등을 관리 JOB_EXECUTION_ID jobExecution 을 고유하게 식별할..

Spring Batch 2022.08.18

Spring Batch의 기본 구조와 DB 연결

👉설정 Maven & yml 기준 다중 연결한 DB = h2 , mariadb ------------------------------------------------------------------------------------------------------------------------------------------------ Batch의 기본 구조를 만들어보기 전에 DB를 먼저 연결해주었다. 이왕 연결해주는거 yml에 다중 DB 연결을 연습해보려 2개를 연결했습니다. h2 Maven 설정 com.h2database h2 runtime mariadb Maven 설정 org.mariadb.jdbc mariadb-java-client 3.0.7 yml에 다중 DB 설정하기 spring: profil..

Spring Batch 2022.08.17

Spring Batch 스키마 생성

스프링 배치 메타 데이터 스프링 배치의 실행 및 관리를 위한 목적으로 여러 도메인들(Job , Step , JobParameters……)의 정보들을 저장 , 업데이트 , 조회할 수 있는 스키마 제공 과거 , 현재의 실행에 대한 세세한 정보 , 실행에 대한 성공과 실패 여부 등을 관리 DB 와 연동할 경우 필수적으로 메타 테이블이 생성 되어야 함 스키마 생성 설정 수동 생성 쿼리 복사 후 직접 실행 자동생성 👍spring.batch.jabc.initalize-schema 설정 ALWAYS 스크립트 항상 실행 RDBMS 설정이 되어 있을 경우 내장 DB 보다 우선적으로 실행 EMBEDDED 내장 DB일 때만 실행되며 스키마가 자동 생성됨 , 기본값 NEVER 스크립트 항상 실행 안함 내장 DB 일경우 스크립..

Spring Batch 2022.08.17

Exception

스프링 부트의 예외 처리 방식 스프링 부트의 예외 처리 방식은 2가지가 존재합니다 @ControllerAdvice를 통한 모든 Controller에서 발생할 수 있는 예외처리 @ExceptionHandler를 통한 특정 Controller의 예외처리 ❗쉽게 생각하자면 @ControllerAdvice 로 모든 컨트롤러에서 발생할 예외를 정의하고 , @ExceptionHandler를 통해 발생하는 예외 마다 처리할 메서드를 정의한다고 생각하자 @ControllerAdvice , @RestControllerAdvice @ControllerAdvice는 Spring에서 제공하는 어노테이션 @Controller나 @RestController 에서 발생하는 예외를 한 곳에서 관리하고 처리할 수 있게 하는 어노테이션..

Spring Boot API 2022.08.16

Spring Batch 기본 구조

@EnableBatchProcessing 👍스프링 배치가 작동하기 위해 선언해야 하는 어노테이션 총 4개의 설정 클래스를 실행시키며 스프링 배치의 모든 초기화 및 실행 구성이 이루어진다 스프링 부트 배치의 자동 설정 클래스가 실행됨으로 빈으로 등록된 모든 Job을 검색해서 초기화와 동시에 Job을 수행하도록 구성됨 코드로 보는 Batch @Configuration 선언 하나의 배치 Job 을 정의하고 빈 설정 JobBuilderFactory Job을 생성하는 빌더 팩토리 StepBuilderFactory Step을 생성하는 빌더 팩토리 Job helloJob 이름으로 Job 생성 Step helloStep 이름으로 Step 생성 tasklet Step 안에서 단일 태스크로 수행되는 로직 구현 🎈실행순서 ..

Spring Batch 2022.08.13

문제야 어디 있니~? LogBack

코드를 실행시키고 테스트를 진행하고 하다 보면 간혹 이게 어디서.. 왜.... 나는 에러지...? 왜 실행이 안 되는 거지?? 하는 경우가 종종 생기는데 이럴 때 바로!! 사용해야 할 것이 로그이다 기존에는 Log4j2를 사용했었는데 최근 LogBack도 알게 되어 살짝궁 정리해본다 LogBack 이란?? Log4J를 기반으로 개발된 로깅(Logging)라이브러리 Log4j에 비해 약 10배 정도 빠른 퍼포먼스 , 메모리 효율성 증대 *출시 순서 : log4 j → logback →log4 j2 Logback 특징 로그에 특정 레벨을 설정할 수 있음 (Trace → Debug → Info → Warn → Error) Trace 가 가장 가벼운 로그 뒤로 갈수록 중요도가 높아짐 실 운영과 테스트 상황에서 ..

Spring Boot API 2022.08.10

로드밸런싱

IOT 관련 일은 하다 보니 자연스럽게 접하게 된 로드밸런싱 자주 보이는데 무슨 말인지 몰라 이참에 정리해보려 합니다 로드밸런싱 트래픽을 여러 대의 서버로 분산해주는 기술이 없다면 한 곳의 서버에 모든 트래픽이 몰리는 상황이 발생할 것입니다. 이때 필요한 기술이 바로 로드밸런싱입니다. ✨로드밸런서 아키텍처 로드밸런서? 로드밸런서는 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술을 통칭합니다. 클라이언트와 서버 풀(Server Pool, 분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치하며, 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 퍼포먼스를 보일 수 있도록 합니다. L4 로드밸런싱과 L7 로드밸런싱 부하 분산에는 L4 로드밸런서와 L7 로드밸런..

@Valid 의 종류 알아보기

✌[ 다양한 제약조건 어노테이션 ] 어노테이션 조건 Int Type 불가 @Size 해당 값이 주어진 값 사이에 해당하는지 검증함(String, Collection, Map, Array에도 적용 가능) @NotNull 해당 값이 null이 아닌지 검증 @NotEmapty 해당 값이 null이 아니고 , 빈 스트링(””)아닌지 검증 (” “은 가능함) @NotBlank 해당 값이 null이 아니고 , 공백(””과 “ “ 모두 포함)이 아닌지 검증 @Past 과거 날짜 @PastOnPresent 오늘이거나 과거 날짜 @Future 미래 날짜 @FutureOnPresent 오늘이거나 미래 날짜 @Pattern 해당 값이 주어진 패턴과 일치하는지 검증함 @Max 최대값 @Min 최소값 @AssertTrue/Fa..

Spring Boot API 2022.08.10

@SpringBootApplication 이 정상적으로 기능하지 못한 이유

🤯문제의 시작 Boot를 차근차근 공부하기 위해 새롭게 프로젝트를 만들고 진행하면서 간단하게 "Hello World" 띄워보려 하는데 페이지가 안 뜨는 일이 생겼다... 로그를 찍어보니 controller을 찾지 못하고 있는 거 같아 강제로 ConponentScan을 걸어주어서 해결했는데 왜 이런 일이 생긴 걸까..? 😱@SpringBootApplication 이 정상적으로 기능하지 못한 이유 ❗Package 구조를 보아야 한다. 시작점인 메인클래스가 위치한 패키지의 하위에 있는 클래스들을 검색하여 Bean으로 등록하기에 하위 패키지에 속하지 않는다면 스프링 컨테이너는 해당 클래스를 Bean으로 등록하지 않게 된다. Spring에서는 @Controller 혹은 @RestController을 설정해도 XM..

Spring Boot API 2022.08.09

우선 널 알아야겠구나...! 컴포넌트 스캔 (Component Scan)과 Auto Configuration

부트캠프 과정을 마치고 생각보다 빠르게 취업에 성공해서 기뻐한 것도 잠시... 게시판만 만들던 저에게 크나큰 시련이 찾아왔습니다. 바로 API설계..... 물론 만들어 본적은 있지만 짧은 기간에 많은 것을 배우다 보니 정확하게 이해하지 못하고 넘어간 부분이 많아 환경이 변하니 어떤 거부터 만들어야 할지... 막막해 다시 차근차근 공부해보려 합니다. API 설계를 하려하니 우선 Spring Boot의 Auto Configuration에 대한 이해가 조금은 있어야 한다는 생각이 들었습니다. 이유는... 코드를 짜던중 컴포넌트로 인식을 못하는 상황이 생겼기 때문이죠... 그래서 준비한 이야기!! 지금부터 시작합니다. 컴포넌트 스캔 (Component Scan) 과 Auto Configuration 컴포넌트 스..

Spring Boot API 2022.08.09