본문 바로가기

spring30

[Spring] Spring Boot에서 JAR 파일 활용 및 실행 과정 Spring Boot 애플리케이션을 실행하면 내부적으로 JAR 파일을 활용하여 실행된다.Spring Boot에서 빌드하면 **실행 가능한 JAR 파일(Fat JAR, Uber JAR)**이 생성되며, 이 JAR 파일을 실행하면 JVM이 내부 클래스를 로드하고 내장 웹 서버를 시작한 후, Spring 애플리케이션을 실행한다. (Fat JAR : 실행 가능한 JAR로, 애플리케이션 코드 + 모든 의존 라이브러리를 포함한 JAR) 1. Spring Boot에서 JAR 파일이 생성되는 과정 Spring Boot 애플리케이션은 빌드 시 JAR 파일을 생성하며, 이 JAR 파일에는 다음이 포함된다. 1. 애플리케이션 코드 (.class 파일) 2. application.properties 또는 application.. 2025. 3. 8.
[Spring] CompletableFuture 주요 함수들 CompletableFuture는 비동기 프로그래밍에서 다양한 함수들을 제공하여 작업의 실행, 결과 처리, 작업 병합, 에러 처리 등을 간편하게 수행할 수 있도록 합니다. 아래에서 주요 함수들과 그 기능에 대해 설명하겠습니다. 1. 비동기 작업 실행 1.1 runAsync • 결과값을 반환하지 않는 비동기 작업을 실행. • 주로 Runnable을 실행할 때 사용. • 기본적으로 ForkJoinPool을 사용하지만, Executor를 지정할 수도 있음.CompletableFuture future = CompletableFuture.runAsync(() -> { System.out.println("비동기 작업 실행!");}); 1.2 supplyAsync • 결과값을 반환하는 비동기 작업을 실행. • .. 2025. 1. 17.
[Spring] CompletableFuture 동작 예시 CompletableFuture를 실제 프로젝트에서 어떻게 사용하는지 알아보기 위해, 다양한 시나리오를 바탕으로 구체적인 예제를 단계적으로 설명하겠습니다.  1. 간단한 비동기 작업 CompletableFuture로 비동기 작업을 시작하고 결과를 처리하는 기본적인 예제입니다.import java.util.concurrent.CompletableFuture;public class CompletableFutureExample { public static void main(String[] args) { CompletableFuture future = CompletableFuture.supplyAsync(() -> { // 비동기 작업 수행 System... 2025. 1. 16.
[Spring] CompletableFuture 등장 배경 CompletableFuture는 Java에서 비동기 프로그래밍을 더욱 직관적이고 강력하게 만들기 위해 설계되었습니다. 등장 배경과 발전 과정을 살펴보면, Java의 동시성 프로그래밍과 관련된 문제들을 해결하기 위한 필요성과 이 클래스가 가진 장점이 명확히 드러납니다.  1. 배경: Java의 동시성 프로그래밍 Java는 초기부터 멀티스레딩과 동시성 프로그래밍을 지원해왔지만, 복잡한 비동기 작업을 처리하기에는 한계가 있었습니다. 1.1 Java의 초기 멀티스레딩 문제 • Thread 클래스와 Runnable 인터페이스:Java 1.0부터 Thread와 Runnable을 통해 멀티스레딩을 지원했지만, 직접적으로 스레드를 생성하고 관리해야 했습니다. 이는 코드가 복잡해지고 오류를 유발할 가능성이 높았습니다... 2025. 1. 16.
[Spring] I/O 작업, CPU작업 I/O 작업과 CPU 작업: 개념 및 동작 방식 1. I/O 작업 (Input/Output) 개념 • I/O 작업은 **외부 시스템(디스크, 네트워크, DB 등)**과 데이터를 주고받는 작업입니다. • CPU가 아닌 하드웨어 장치와 통신하며, 시간이 오래 걸릴 수 있습니다. • 예: 파일 읽기/쓰기, 네트워크 요청, 데이터베이스 조회 등. 특징 • 상대적으로 속도가 느림 (네트워크 지연, 디스크 접근 시간 등). • CPU는 이 작업 중에 대기 상태로 남아 있을 수 있음. 동작 방식 1. 프로세스는 I/O 작업 요청을 보냄. 2. 하드웨어 장치(디스크, 네트워크 등)가 작업을 수행. 3. 작업 완료 후, 프로세스는 결과를 받음.  2. CPU 작업 개념 • CPU 작업은 데이터를 계산하거나 로직을 처리하.. 2025. 1. 6.
[Spring] Spring에서의 동기 비동기 동기와 비동기의 이해 및 활용 정리 1. 기본적인 개념 동기(Synchronous) 실행 • 정의: 작업이 순차적으로 실행되며, 하나의 작업이 완료되어야 다음 작업이 실행됩니다. • 특징: • 요청마다 하나의 쓰레드가 할당됩니다. • 작업 중에 **I/O 작업이 발생하면 해당 쓰레드는 차단(Blocking)**되어 대기합니다. • CPU 작업과 I/O 작업이 같은 쓰레드에서 처리됩니다. • 문제점: • I/O 작업 대기 시간이 긴 경우, 쓰레드가 낭비됩니다. • 요청이 많아지면 쓰레드 풀의 크기를 초과하여 병목 현상이 발생할 수 있습니다. 비동기(Asynchronous) 실행 • 정의: 작업이 병렬적으로 실행되며, I/O 작업 중에는 쓰레드가 반환되어 다른 작업에 사용됩니다. • 특징: • I/O 작업 .. 2025. 1. 6.