Spring 5

application.yml 여러개로 나누기

프로젝트를 만들다 보면 보통 아래와 같이 loc, dev, stag, prod 형태로 application.yml 또는 application.properties를 나눌 것 입니다. spring: main: web-application-type: none profiles: active: local batch: job: names: ${job.name:NONE} --- ## loc 환경 설정 spring: config: activate: on-profile: loc --- ## dev 환경 설정 spring: config: activate: on-profile: dev --- ## stag 환경 설정 spring: config: activate: on-profile: stag --- ## prod 환경 설정..

Spring 2022.12.14

stream API와 for-loop 성능차이

나의 경우 stream API를 많이 써보지 않았는데 이번에 신기한것을 발견하였다. 간만에 프로그래머스에서 코딩테스트를 보는데 stream API를 썼을 때 효율성 테스트를 통과하지 못하길래 열심히 구글링을 해보니 stream API가 for-loop문보다 더 성능이 안 좋다는것이 아니겠는가? 한번 테스트를 해보자 package level1; import java.util.Arrays; import java.util.Random; public class PerfomanceTest { public static void main(String[] args) { int[] arr = new int[100]; long start; long end; Random rd = new Random(); // init fo..

Spring 2022.02.07

SpringBatch 전용 DB 테이블

스프링배치의 경우 작업 이력을 남기기 위한 기본 테이블을 미리 생성을 해주어야 한다. 테이블의 정보는 아래와 같다. 테이블 구조 테이블 설명 번호 분류 테이블 명 설명 1 JOB BATCH_JOB_INSTANCE Job이 실행될 때 생성되는 JobInstance에 관한 정보를 저장 2 BATCH_JOB_EXECUTION JobInstance의 실행단위에 대한 실행횟수(1번 또는 1번이상)를 나타내는JobExecute에 관한 정보를 저장 매번 Job이 실행될 때마다 새로운 레코드가 쌓임 3 BATCH_JOB_EXECUTION_PARAMS JobParameter에 대한 모든 정보를 기록 JobParameter값에 따라 JobInstance가 생성되며 동일한 JobParameter값으로 JobApplicati..

Spring 2022.02.07

SpringBatch

SpringBatch란? 배치처리 기능을 구현하는데 사용되는 프레임워크로 설정이 간편하며 빠르게 배치 프로그램을 제작 할 수 있다. SpringBatch를 써야하는 이유? 대용량 데이터 처리에 최적화 되어 고성능을 발휘한다. 효과적인 로깅, 통계 처리, 트랜잭션 관리 등 재사용 가능한 필수 기능을 지원한다. 수동으로 처리하지 않도록 자동화되어 있다. 예외사항과 비정상 동작에 대한 방어 기능이 있다. 스프링 부트 배치의 반복되는 작업 프로세스를 이해하면 비즈니스 로직에 집중 할 수 있다. 주의 사항 가능하면 단순화해서 복잡한 구조와 로직을 피해야한다. 데이터를 직접 사용하는 작업이 빈번하게 일어나므로 데이터 무결성을 유지하는 유효성 검사 등의 방어책이 있어야합니다. 배치 처리시 시스템 I/O 사용을 최소화..

Spring 2022.02.07

application.yml로 환경 나누기

소스 코드를 개발하다 보면 환경별로 설정 파일을 나누어야 할 때가 있다. 예를 들면 DB정보나 계정정보가 있을 수 있다. 기존에 properties를 사용할 때는 application-dev.properties, application-stg.properties, application-prd.properties 형태로 여러개의 파일을 만들어 외부에서 환경을 주입 받아서 사용하였는데 이번에 컨슈머를 작업하다 보니 아주 좋은 걸 발견하여 정리한다. 이번 프로젝트에서 요구 사항은 다음과 같았다. 1. 공통 데이터 파이프라인 구축을 위한 One 소스 컨슈머 개발 2. 데이터 포맷을 통일하여 투어,티켓,도서,쇼핑의 End Point 데이터 토픽을 구독할수 있도록 개발 위의 요구사항을 보면 다행인점은 데이터 포맷은 ..

Spring 2022.01.28
1