본문 바로가기
728x90
반응형

Spring16

when using copy with more than one source file the destination must be a directory and end with a / (aws 빌드 에러) Springboot project를 AWS 서버에 Docker + Github Action 조합으로 배포하는 와중에 when using copy with more than one source file the destination must be a directory and end with a / 에러가 발생하며 빌드 실패했다. 처음에는 도커파일이 문제인가? 싶었는데... 아니었다. 스프링부트 2.5 버전 이상부터는 gradle로 빌드하면 jar 파일이 2개가 생성된다고 한다. 프로젝트이름-버전.jar 프로젝트이름-버전.plain.jar 이 중에 ~plain.jar에는 라이브러리 없이 단순히 코드만 들어있는데 이때문에 오류가 발생한다고 하네. 그래서 build.gradle 파일에 아래와 같이 plan.jar.. 2023. 7. 4.
스프링배치 완벽가이드 - 7장 ItemReader XML XML parser로 DOM 파서와 SAX(Simple API for XML) 파서를 많이 이용한다. DOM 파서는 노드를 탐색할 수 있도록 전체 파일을 메모리에 트리 구조로 읽어들인다. 이 경우 성능에 큰 부하가 발생할 수 있어 배치 처리에는 적합하지 않다. 배치에 사용할 것은 SAX 파서이다. SAX는 특정 엘리먼트를 만나면 이벤트를 발생시키는(=순차적으로 읽어가며 파싱하는) 이벤트 기반 파서이다. 스프링 배치에서는 StAX(Streaming API for XML) 파서를 사용한다. SAX 파서와 차이점은 XML 문서 내 각 섹션을 독립적으로 파싱하는 기능을 제공한다는 장점이 있다. 실행을 하면 SAX 파서가 전체 파일을 파싱하는데 비해 StAX를 사용하면 한 번에 처리해야할 아이템을 나타내는.. 2023. 7. 3.
스프링배치 완벽가이드 - 6장 잡 실행하기 6장 잡 실행하기 from. 스프링 배치 완벽 가이드 스프링 부트로 배치 잡 시작하기 JobLauncherCommandLineRunner는 스프링 배치의 JobLauncher를 사용해 잡을 실행한다. 스프링 부트가 ApplicationContext 내에 구성된 모든 CommandLineRunner를 실행할 때, 클래스패스에 spring-boot-starter-batch가 존재한다면 JobLauncherCommandLineRunner는 컨텍스트 내에서 찾아낸 모든 잡을 실행한다. 쿼츠를 사용해 스케줄링하기 쿼츠는 스케줄러, 잡, 트리거라는 세 가지 주요 컴포넌트를 가진다. 스케줄러는 JobDetails 및 트리거의 저장소 기능을 한다. 또한 연관된 트리거가 작동할 때 잡을 실행한느 역할을 한다. 잡은 실행.. 2023. 6. 25.
스프링배치 완벽가이드 - 4장 잡과 스텝 이해하기 4장 잡과 스텝 이해하기 스프링배치 완벽가이드를 보며 공부 겸 적은 내용입니다. 잡(job) 잡은 처음부터 끝까지 독립적으로 실행할 수 있는 고유하며 순서가 지정된 여러 스텝의 목록이다. 유일하다. 순서를 가지는 여러 스텝의 목록이다. 다음 스텝은 이전 스텝이 완료된 이후에 실행된다. 처음부터 끝까지 실행 가능하다. 독립적이다. 자신이 처리하기로 정의된 모든 요소를 제어할 수 있다. 스텝(step) 잡이 전체적인 처리를 정의한다면 스텝은 잡의 구성 요소를 담당한다. 스텝은 독립적이고 순차적으로 배치 처리를 수행한다. 때문에 스텝 = 배치 프로세서 라고 볼 수 있다. 스텝은 모든 '단위 작업의 조각'이다. 자체적으로 입력을 처리하고, 자체적인 처리기를 가질 수 있으며 자체적으로 출력을 처리한다. '트랜잭션.. 2023. 6. 25.
웹 애플리케이션 서버 구동 시 일어나는 일 (초기화 - 서블릿 컨테이너/애플리케이션 초기화) 웹 애플리케이션 서버 구동 시 초기화는 다음 순서로 진행된다. 1. 서블릿 컨테이너 초기화 - resources/META-INF/services/jakarta.servlet.ServletContainerInitializer 파일을 읽어 실행 2. 애플리케이션 초기화 - @HadlesTypes 에 지정된 인터페이스(예: @HandlesTypes(AppInt.class)를 찾아 실행 참고: 인프런 - 스프링 부트 핵심 원리와 활용 / 김영한 2023. 6. 4.
728x90
반응형