본문 바로가기

Spring

(50)
효율적인 캐싱 전략: Spring Cache의 기본 개념과 데이터 흐름 살펴보기 Spring Cache의 개념과 컨셉Spring Cache는 애플리케이션에서 자주 조회되는 데이터를 캐싱하여 성능을 최적화하는 기능을 제공합니다. Spring에서는 캐시 추상화를 통해 다양한 캐시 제공자(e.g., EhCache, Caffeine, Redis 등)를 손쉽게 통합할 수 있습니다. Spring Cache는 주요 애너테이션 기반으로 작동하며, 메서드 호출 결과를 캐시에 저장하고, 이후 동일한 파라미터로 메서드를 호출할 때 캐시된 결과를 반환하여 메서드 실행을 생략할 수 있습니다.Spring Cache의 주요 애너테이션@Cacheable: 이 애너테이션은 메서드의 실행 결과를 캐시에 저장합니다. 동일한 파라미터로 메서드가 다시 호출되면 캐시된 값을 반환합니다.@CachePut: 이 애너테이션은 ..
Spring Integration의 진정한 힘: TCP 통신 구현 가이드 Spring Integration을 사용하여 TCP 통신을 구성하는 방법을 설명하겠습니다. 이 가이드에서는 Gradle 기반의 설정과 함께 Gateway를 사용하는 방법을 중심으로 다룹니다.Gradle 설정먼저, 필요한 의존성을 build.gradle 파일에 추가합니다.plugins { id 'org.springframework.boot' version '3.1.0' id 'io.spring.dependency-management' version '1.1.0' id 'java'}group = 'com.example'version = '1.0.0'sourceCompatibility = '17'repositories { mavenCentral()}dependencies { // S..
Spring Integration 이란 무엇인가? Spring Integration은 엔터프라이즈 애플리케이션 통합(EAI, Enterprise Application Integration) 패턴을 구현하기 위한 Spring 프레임워크의 서브 프로젝트입니다. Spring Integration을 사용하면 메시지 기반 아키텍처를 사용하여 다양한 시스템 간의 통합을 쉽게 구현할 수 있습니다. 이 프레임워크는 메시지 라우팅, 변환, 필터링, 메시지 채널 및 메시지 엔드포인트 등 다양한 기능을 제공합니다.기본 개념Message: Spring Integration의 기본 단위는 Message입니다. 메시지는 데이터를 캡슐화하고 헤더를 통해 메타데이터를 포함할 수 있습니다.Message Channel: 메시지 채널은 메시지가 송신자에서 수신자로 전달되는 경로를 의미합..
[Spring Batch] 메타 테이블에 대해 알아보자! 스프링 배치(Spring Batch)는 대규모 데이터 처리를 위한 프레임워크로, 작업(Job)과 단계(Step)를 기반으로 데이터를 읽고 처리하고 쓰는 기능을 제공합니다. 이 과정에서 작업의 실행 상태를 추적하고 관리하기 위해 메타 테이블을 사용합니다. 메타 테이블은 작업 실행의 상태와 관련된 다양한 정보를 저장하는데 사용됩니다.주요 메타 테이블BATCH_JOB_INSTANCE구분내용용도작업의 논리적 단위를 나타내는 테이블입니다. 각 작업(Job)의 인스턴스(Instance) 정보를 저장합니다.주요 컬럼JOB_INSTANCE_ID: 작업 인스턴스의 고유 IDJOB_NAME: 작업 이름JOB_KEY: 작업 인스턴스를 구분하기 위한 키 (주로 파라미터 기반의 직렬화)BATCH_JOB_EXECUTION구분내용..
[Spring Boot] DI(Dependency Injection: 의존성 주입) 란 무엇인가? DI의 주요 개념IoC (Inversion of Control):전통적인 방식에서는 객체가 직접 자신의 의존성을 생성하거나 관리합니다. IoC는 이러한 제어의 흐름을 개발자가 아닌 컨테이너(Sprint Container)에게 맡기는 개념입니다.빈(Bean):Spring 컨테이너가 관리하는 객체를 빈이라고 합니다. 빈은 Spring 애플리케이션 컨텍스트에 의해 생성되고 관리됩니다.컨테이너(Container):Spring에서는 ApplicationContext가 컨테이너 역할을 하며, 애플리케이션의 빈을 생성, 설정, 관리합니다.DI 유형필드 주입(Field Injection):필드에 직접 주입하는 방식입니다.생성자 주입(Constructor Injection):생성자를 통해 의존성을 주입받는 방식입니다.세..
[Spring Boot] Spring Boot에서 JWT 토큰 발급 및 인증 해보기!! Spring Boot에서 JWT 토큰을 발급하고 검증하는 방법을 설명드리겠습니다. JWT를 사용한 인증을 구현하기 위해 Spring Security와 함께 JWT 라이브러리를 사용합니다. 여기서는 기본적인 설정과 함께 JWT 토큰을 발급하고 검증하는 예제를 소개 하겠습니다.  프로젝트 설정먼저, 필요한 의존성을 build.gradle (또는 pom.xml에 추가해야 합니다.)Gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'io.j..
[Spring Boot] AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)란 무엇인가? Spring Boot에서 AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 코드의 중복을 줄이고, 모듈성을 향상시키기 위한 강력한 도구입니다. AOP는 주로 애플리케이션의 로깅, 트랜잭션 관리, 보안, 예외 처리 등 횡단 관심사(Cross-Cutting Concerns)를 처리하는 데 사용됩니다.AOP의 기본 개념Aspect(애스펙트): 횡단 관심사를 모듈화한 것입니다. 예를 들어, 로깅이나 트랜잭션 관리 기능이 하나의 Aspect가 될 수 있습니다.Join Point(조인 포인트): 애플리케이션 실행 중 특정 지점입니다. 메서드 호출이나 예외 처리 등 여러 종류의 Join Point가 있습니다.Advice(어드바이스): 특정 Join Point에서 실행될 코드를 정의합..
Spring Native Image 란 무엇인가? Graal VM 이란? Graal VM은 Oracle이 개발한 고성능 가상 머신입니다. Graal VM은 다양한 언어를 지원하며, 특히 Java 언어에 최적화되어 있습니다. 이 가상 머신은 기존의 JVM(Java Virtual Machine)과는 다른 컴파일러를 사용하여 더 빠른 실행 속도와 낮은 메모리 사용량을 제공합니다. Graal VM은 JIT(Just-In-Time) 컴파일러와 AOT(Ahead-of-Time) 컴파일러를 모두 지원하여, 실행 시점에 최적화된 코드를 생성하거나 미리 컴파일하여 더 효율적인 실행을 가능하게 합니다. 또한, 다른 언어를 JVM 위에서 실행할 수 있는 기능을 제공하여, 다양한 언어 간의 상호 운용성을 향상시킬 수 있습니다. Graal VM은 다양한 분야에서 사용될 수 있..