스프링 16

[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] 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] Hystrix

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

[SPRING BOOT] 유효성 검사(Validation)

소개Spring Boot는 데이터 유효성 검사를 통해 애플리케이션의 데이터를 효과적으로 검증할 수 있습니다. 이 가이드는 Spring Boot에서 유효성 검사를 설정하고 사용하는 방법을 설명합니다.  프로젝트 설정Spring Initializr를 사용하여 새로운 Spring Boot 프로젝트를 생성합니다. "Spring Web"과 "Validation" 의존성을 추가합니다. build.gradleimplementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '3.3.1'implementation 'org.springframework.boot:spring-boot-starter-validation'  엔티..

[SPRING BOOT] 스케줄링(Scheduling)

소개Spring Boot의 스케줄링 기능을 사용하면 특정 작업을 일정에 따라 실행할 수 있습니다. 이 가이드는 Spring Boot에서 스케줄링을 설정하고 사용하는 방법을 설명합니다.  프로젝트 설정Spring Initializr를 사용하여 새로운 Spring Boot 프로젝트를 생성합니다. "Spring Web" 의존성을 추가합니다. build.gradle// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-webimplementation group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '3.3.1'  스케줄링 설정mai..

[SPRING BOOT] JPA

소개Spring Data JPA는 데이터베이스 작업을 간소화하는 강력한 도구입니다. 이 가이드는 Spring Boot와 JPA를 통합하여 CRUD 애플리케이션을 구축하는 방법을 설명합니다.  프로젝트 설정Spring Initializr를 사용하여 새로운 Spring Boot 프로젝트를 생성합니다. "Spring Web", "Spring Data JPA", "H2 Database" 등의 의존성을 추가합니다. build.gradleimplementation 'org.springframework.boot:spring-boot-starter-data-jpa'  엔티티(Entity) 클래스 생성데이터베이스 테이블과 매핑되는 엔티티 클래스를 생성합니다. User.javapackage com.example.demo;..

[SPRING BOOT] Actuator

소개Spring Boot Actuator는 애플리케이션의 운영 환경에서 유용한 다양한 모니터링 및 관리 도구를 제공합니다. 이를 통해 애플리케이션의 상태, 메트릭스, 요청 추적 등을 쉽게 확인할 수 있습니다.  주요 기능엔드포인트: 다양한 엔드포인트를 제공하여 애플리케이션의 상태와 정보를 노출합니다./actuator/health: 애플리케이션의 상태를 확인합니다./actuator/metrics: 다양한 메트릭스를 제공합니다./actuator/info: 애플리케이션의 일반 정보를 노출합니다.  설정 방법의존성 추가: build.gradle 파일에 Spring Boot Actuator 의존성을 추가합니다. build.gradle// https://mvnrepository.com/artifact/org.sp..

[SPRING BOOT] 자동 설정 기능

소개Spring Boot의 자동 설정(Autoconfiguration) 기능은 개발자가 명시적으로 설정하지 않아도 애플리케이션을 구성하는 데 도움을 줍니다. 이 기능은 Spring Framework의 다양한 설정을 자동으로 적용하여 개발 시간을 단축하고 코드의 간소화를 제공합니다.  작동 방식Spring Boot는 클래스패스에 존재하는 라이브러리와 개발자가 정의한 빈(bean)을 기반으로 적절한 설정을 자동으로 구성합니다. 이를 통해 최소한의 설정으로도 애플리케이션을 빠르게 시작할 수 있습니다.  예시 : 데이터베이스 설정Spring Boot는 데이터베이스 종속성이 포함된 경우, 기본적으로 데이터소스를 자동으로 설정합니다. 예를 들어, spring-boot-starter-data-jpa 종속성을 추가하..

SPRING 파헤치기 #1 - SPRING FRAMEWORK

★ 이 글은 김영한 님의 스프링 핵심 원리 - 기본편을 학습하면서 작성하였습니다. SPRING FRAMEWORK 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 솔루션 핵심 기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타 웹 기술 : 스프링 MVC, 스프링 WebFlux 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원 기술통합 : 캐시, 이메일, 원격접근, 스케줄링 테스트 : 스프링 기반 테스트 지원 언어 : 코틀린, 그루비 핵심 컨셉 자바 언어(객체 지향 언어) 기반의 프레임워크 좋은 객체 지향 어플리케이션을 개발할 수 있도록 도와주는 프레임워크 스프링은 다형성을 극대화해서 이용할 수..