프로그래밍 언어/JAVA, SPRING 26

[SPRING BATCH] 1. 스프링 배치란

개요스프링 배치(Spring Batch)는 대량의 데이터를 처리하는 데 특화된 배치 프로세싱 프레임워크이다.데이터 읽기, 처리, 쓰기 과정을 간단하게 설정할 수 있게 설계되어 있다.   프로젝트 생성IntelliJ를 사용한 프로젝트 생성 방법이다.JPA, H2 Database, Spring Batch를 추가하여 프로젝트를 생성한다.// build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.4.0' id 'io.spring.dependency-management' version '1.1.6'}group = 'com.temp'version = '0.0.1-SNAPSHOT'java { toolchain { ..

[SPRING BOOT] 멀티모듈 프로젝트 설계하기

개요대규모 애플리케이션에서는 유지보수와 확장성을 고려해 프로젝트를 모듈로 나누는 경우가 있다.이번 글에서는 Spring Boot 멀티모듈 프로젝트를 설계하고 구성하는 방법을 작성했다.  멀티모듈 프로젝트?멀티모듈 프로젝트는 하나의 루트 프로젝트 아래에 여러 서브모듈을 포함하는 프로젝트 구조이다.각 모듈은 독립적으로 개발 및 배포될 수 있지만, 상호 간에 의존성을 가질 수 있다. 왜 멀티모듈 프로젝트를 사용하는가?모듈화: 비즈니스 로직을 분리하여 코드 유지보수성을 높인다.재사용성: 공통 모듈을 여러 프로젝트에서 재사용할 수 있다.협업 용이성: 팀원이 서로 다른 모듈을 독립적으로 개발할 수 있다.빌드 최적화: 특정 모듈만 빌드하거나 테스트할 수 있다. 프로젝트 구조spring-multi-module-proj..

[SPRING BOOT] WebSocket과 Redis를 활용한 실시간 채팅 시스템 구축하기

개요Spring Boot와 WebSocket을 활용하면 효율적인 실시간 통신 기능을 구현할 수 있다.이번 글에서는 Redis를 추가로 사용해 메시지 저장과 자동 삭제 기능을 갖춘 채팅 시스템을 구축하는 방법을 작성했다.  구성요소WebSocket: 클라이언트와 서버 간의 양방향 통신을 가능하게 하는 프로토콜.Redis: 메시지 저장소로 활용하며 TTL(Time to Live)을 사용해 일정 시간이 지나면 메시지를 삭제.Spring Boot: WebSocket 서버를 구현하는 데 사용.  WebSocket 설정Spring Boot에서 WebSocket 서버를 구현하려면 @EnableWebSocket과 WebSocketHandler를 사용한다. WebSocketConfig.javaWebSocket 설정파일..

[SPRING BOOT] CORS 에러와 DELETE요청 해결하기

개요Spring Boot를 사용하며 DELETE 요청에서만 CORS(Cross-Origin Resource Sharing) 문제가 발생하는 경우가 있다.이번 글에서는 CORS의 기본 개념부터 Spring Boot에서 DELETE 요청과 관련된 문제를 해결하는 방법을 작성했다.   CORS ?CORS는 브라우저가 다른 도메인의 리소스에 접근할 때 보안을 위해 요청을 제한하는 정책이다.예를 들어, 클라이언트 애플리케이션이 http://localhost:3000에서 실행 중인데, API 서버가 http://localhost:8080에 있다면, 기본적으로 브라우저는 이를 다른 서버로 간주한다.CORS 문제는 요청 헤더, 메서드, 또는 인증 정보가 예상과 다를 때 주로 발생한다. DELETE 요청에서 CORS ..

[SPRING BOOT] UnrecognizedPropertyException 해결하기

개요Spring Boot를 사용하며 JSON 데이터를 직렬화/역직렬화할 때, UnrecognizedPropertyException이 발생하는 경우가 있다.이 예외는 Jackson 라이브러리가 JSON을 자바 객체로 변환하는 과정에서 예상하지 못한 필드가 발견되었을 때 발생하는데 이를 해결하는 방법에 대해서 설명하고자 한다. 문제 상황ResponseVo라는 클래스가 아래와 같이 정의되어 있을 때, JSON데이터가 정의되어 있지 않은 필드를 담고 있을 경우 에러가 발생한다.@Datapublic class ResponseVo { private String responseMessage; private String responseCode;}// JSON DATA{ responseMessage: 'suc..

[JAVA] Exception Handling

개요Java에서 예외 처리는 프로그램 실행 중 발생할 수 있는 오류를 관리하고, 프로그램의 비정상적인 종료를 방지하는 중요한 기능입니다. 예외 처리를 통해 프로그램이 오류 상황에서도 적절하게 대응할 수 있도록 합니다.  기본 개념 예외(Exception) - 프로그램 실행 중에 발생하는 예기치 않은 상황이나 오류.예외 처리(Exception Handling) - 예외 발생 시 적절한 대응을 하여 프로그램의 정상적인 흐름을 유지하는 방법.   예외의 종류 Checked Exception - 컴파일 시점에서 예외 발생 가능성을 검사하며, 반드시 처리해야 합니다. 예: IOException, SQLException.Unchecked Exception - 런타임 시점에서 예외 발생 가능성을 검사하며, 선택적으로..

[SPRING] Sleuth

개요Spring Cloud Sleuth는 분산 시스템에서 트랜잭션을 추적하고, 각 서비스 간의 요청을 모니터링하는 도구입니다. Sleuth는 각 서비스 호출에 고유한 트레이스 ID와 스팬 ID를 추가하여 분산 추적을 가능하게 합니다. 이를 통해 개발자는 서비스 간의 호출 관계와 성능 병목 현상을 쉽게 파악할 수 있습니다 주요 기능분산 추적 - 트랜잭션을 추적하여 서비스 간의 호출 관계를 시각화합니다.트레이스 ID와 스팬 ID - 각 요청에 고유한 식별자를 추가하여 추적을 용이하게 합니다.Zipkin 통합 - Zipkin과 통합하여 추적 정보를 시각화하고 분석할 수 있습니다.  설정build.gradle// https://mvnrepository.com/artifact/org.springframework...

[SPRING] Hystrix

개요Hystrix는 Netflix가 개발한 라이브러리로, 분산 시스템에서 서킷 브레이커 패턴을 구현하여 시스템의 복원력을 높입니다. Hystrix는 마이크로서비스 간의 의존성에서 발생할 수 있는 장애 전파를 방지하고, 서비스가 실패할 때 적절한 대처를 가능하게 합니다. 주요 기능서킷 브레이커 - 실패한 서비스 호출을 감지하고, 장애가 전파되지 않도록 차단합니다.폴백 메커니즘 - 서비스 호출이 실패할 경우 대체 로직을 실행합니다.실시간 모니터링 - 서비스 호출의 성공, 실패, 시간 초과 등의 지표를 모니터링합니다.  설정HystrixDemoApplication.javapackage com.example.hystrixdemo;import org.springframework.boot.SpringApplicat..

[SPRING] 유레카(Eureka)

개요Eureka는 Netflix가 개발한 서비스 등록 및 발견 도구로, 마이크로서비스 아키텍처에서 서비스 인스턴스들을 등록하고, 이들을 다른 서비스들이 발견할 수 있도록 돕는 역할을 합니다. 주로 클라우드 환경에서 동적으로 변하는 서비스 인스턴스들을 관리하는 데 유용합니다. 주요 기능서비스 등록 - 각 서비스 인스턴스는 Eureka 서버에 자신을 등록합니다.서비스 발견 - 클라이언트는 Eureka 서버를 통해 필요한 서비스의 위치를 동적으로 조회할 수 있습니다.헬스 체크 - 등록된 서비스의 상태를 주기적으로 확인하여 가용성을 보장합니다.  설정EurekaServerApplication.javapackage com.example.eurekaserver;import org.springframework.boo..

[SPRING BOOT] 스프링 클라우드(Spring Cloud)

개요Spring Cloud는 분산 시스템 개발에 필요한 구성 관리, 서비스 등록 및 발견, 라우팅, 로드 밸런싱, 서킷 브레이커, 분산 메시징 등의 기능을 제공합니다. Spring Cloud는 마이크로서비스 아키텍처를 위한 다양한 도구와 기능을 제공하여 애플리케이션 개발과 운영을 단순화합니다.  구성 요소 Spring Cloud Config : 분산 시스템을 위한 중앙 집중식 구성 관리 도구입니다.Spring Cloud Netflix : 넷플릭스 OSS 도구를 Spring Boot와 통합합니다. Eureka, Hystrix, Ribbon, Zuul 등이 포함됩니다.Spring Cloud Gateway : API 게이트웨이로, 라우팅과 필터링 기능을 제공합니다.Spring Cloud Sleuth : 분산 ..