BackEnd(Java)(85)
-
배치 실행 시 잡파라미터 null 바인딩 현상
환경 배치를 로컬에 구성 후 테스트를 하였고 스케쥴링을 통해 특정 잡을 JobLauncher로 실행, JobParameter를 생성하여 전달하였음 현상 스프링 부트 Run을 하여 Reader 부분 확인해 보니 잡 파라미터 값이 null로 들어오고 있다. 처음에 @StepScope를 잘못 썼나? 아니면 파라미터명을 잘못 입력했나? 여러가지 문제를 생각해서 이때부터 삽질의 시간이 시작되었다.. Parameters:[{}] 로 값이 바인딩이 안 되는 로그가 보인다. 그런데 스케쥴링으로 실행되는 부분에서는 잡 파라미터가 잘 들어온다(??) 아래 로그값에도 parameters: [{startDate=2023-02-07, endDate=2023-02-08, timestamp=1675838930004}] 값으로 잘 ..
2023.02.08 -
2. 배치 메타 데이터 분석
✅ 아래 내용들에 대해서 알아보자 - 배치 메타 데이터란 - Job 관련 메타 테이블 - Step 관련 메타 테이블 배치 메타 데이터란? 스프링 배치의 실행 및 관리를 위한 목적으로 여러 도메인들(Job, Step, JobParameters, Execution..)의 정보들을 저장, 업데이트, 조회할 수 있는 스키마 제공 과거, 현재의 실행에 대한 세세한 정보, 실행에 대한 성공과 실패 여부 등을 관리함으로써 배치 운영에 있어 이슈 발생 시 빠른 대처 가능 DB와 연동할 경우 필수적으로 메타 테이블이 생성되어야 함 스프링 배치는 DB별 스키마를 제공한다.(Drop, Create DDL 제공) 위치는 인테리제이 기준으로 External Library > org/springframwork.batch.core..
2023.02.06 -
스프링 이벤트 처리
✅ 아래 내용들에 대해서 알아보자 - 이벤트란 무엇일까? - 스프링 이벤트 처리 방법 - 예제 코드 & 실습 - 이벤트 발송 프로세스 이벤트란? 컴퓨팅에서 이벤트(event)란 프로그램에 의해 감지되고 처리될 수 있는 동작이나 사건을 의미합니다. 예를 들어 사용자가 키보드의 키를 누르는 행위, 사용자가 화면의 버튼을 누르는 것 등의 행위들을 의미한다. 분산 시스템 간에 이벤트를 생성, 발행(publish)하고 발행된 이벤트를 필요로하는 수신자에게 전달하여 수신자가 이벤트를 처리하는 형태의 시스템 아키텍처를 Event-driven-architecture(EDA)라고 한다. 스프링 이벤트 처리 방법 스프링의 Application context는 BeanFactory 기능 말고 여러가지 기능들을 제공하는데 그..
2023.01.20 -
Webflux + Swagger 적용하기
Webflux 환경에서 Swagger를 적용해보자! 1. Webflux에서 Swagger를 사용하기 위해서는 build.gradle에 스웨거 사용을 위해 추가를 한다.(각자 버전에 맞게 설정) implementation "io.springfox:springfox-swagger2:${swaggerVersion}" implementation "io.springfox:springfox-swagger-ui:${swaggerVersion}" implementation "io.springfox:springfox-spring-webflux:${swaggerVersion}" implementation "io.springfox:springfox-bean-validators:${swaggerVersion}" 2. 스웨거를..
2023.01.17 -
Doesn't say anything about org.gradle.plugin.api-version (required '7.6')
현상 인텔리제이에서 빌드 시 아래 오류가 발생 하였음 - Incompatible because this component declares an API of a component compatible with Java 17 and the consumer needed a runtime of a component compatible with Java 11 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '7.6') - Variant 'mavenOptionalRuntimeElements' capability org.springframework.boot:spring-boot-gradle-..
2023.01.03 -
QDSL - 기본 문법
이 글은 김영한님의 QueryDSL 강의를 듣고 정리한 글입니다. where 조건을 사용한 특정 멤버 찾기(JPQL VS Querydsl ) @DisplayName("특정 멤버를 찾는 JPQL 예시") @Test public void startJPQL() { //given, then //member1을 찾아라 Member findMember = em.createQuery("select m from Member m where m.username =:username", Member.class) .setParameter("username", "member1") .getSingleResult(); //then assertThat(findMember.getUsername()).isEqualTo("member1")..
2022.12.08