Study/Spring
-
Spring Batch 6 - DB 테이블 정리Study/Spring 2026. 3. 12.
Spring Batch를 처음 적용하면 BATCH_* 테이블이 먼저 눈에 들어온다. 처음에는 이런 생각이 들 수 있다.배치는 그냥 Job만 실행하면 되는 것 아닌가?왜 별도의 메타데이터 테이블까지 필요할까? Spring Batch는 단순히 메서드를 한 번 호출하는 도구가 아니다.실행 이력, 재시작 가능 여부, Step별 처리 현황, 실행 중 상태값까지 함께 관리하는 배치 프레임워크다. 이때 이런 정보를 저장하는 중심 저장소가 JobRepository이며,공식 문서도 JobRepository를JobExecution, StepExecution 같은 persisted domain object의 CRUD를 담당하는 핵심 구성요소로 설명한다. 즉, BATCH_* 테이블은 단순 로그 테이블이 아니라,Spring B..
-
SpringDoc으로 Swagger API 문서 자동화하기Study/Spring 2025. 6. 2.
✅ 왜 API 문서화가 필요한가?백엔드와 프론트엔드가 분리된 개발 환경에서 API 문서화는 필수다.백엔드 - 프론트엔드 협업 : 정확한 API 스펙 공유로 개발 효율성 증대커뮤니케이션 비용 절감 : "이 API 어떻게 호출하나요?" 질문 감소병렬 개발 가능 : API 스펙 확정 후 각자 개발 진행 📋 API 문서화 방법들1. 수동 문서 작성 - Notion, Confluence 등에 직접 작성 - 단점 : 코드 변경 시 문서 동기화 누락, 유지보수 어려움 2. Postman Collection - 장점 : 테스트와 문서화 동시 해결 - 단점 : 개발자 중심, 비개발자가 보기 어려움 3. Spring REST Docs - 장점 : 테스트 기반으로 정확성 보장, 운영 코드에 어노테이션 불필요 - 단점 :..
-
[Spring] Scheduler(@Scheduled) - fixedDelay vs fixedRateStudy/Spring 2023. 12. 17.
스프링 프레임워크의 Scheduler를 사용하다 보면 fixedDelay(fixedDelayString), fixedRate(fixedRateStrring), cron과 같은 설정을 하게 된다. 이는 스케쥴러의 작동 주기를 설정하는 것이다. cron은 지정한 cron 표현식에 맞춰 작동하게 된다. cron 식은 추후에 별도로 정리하도록 하고, 이번에는 fixedDelay와 fixedRate에 대해서 알아보도록 하자. package com.sendbox.asynctest.service; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.ste..
-
[Spring] Spring Security에 대해 알아보자 (v.6.1.5)Study/Spring 2023. 11. 17.
스프링 프로젝트에 인증과 인가를 적용하기 위해 Spring Security를 적용해보자 한다. 스프링 시큐리티 공식 문서에서도 인증(authentication)과 인가(authorization)을 강조하고 있다. Spring Security is a powerful and highly customizable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. Spring Security is a framework that focuses on providing both authentication and authorization to Java applicati..
-
@Value, @ConfigurationProperties 정리Study/Spring 2023. 11. 3.
개발을 하다 보면 값을 설정파일(yml, properties)에서 가져와야 할 일이 있다. 나는 주로 설정파일에서 값을 가져오는 것들은 자주 바뀌는 값들을 설정해 놓는다. 예를 들어 정해진 시각 이후에는 특정 로직들이 실행되면 안 되게 막는 서비스가 있다고 해보자. if (현재 시각.after(특정 시각)) { return; } 서비스 로직 ~~~ 만약 특정 시각을 코드 내에 하드코딩하여 넣어놓는다면 특정 시각이 바뀔 때마다 값을 변경하여 build 하고 재실행해야 하는 번거로운 일이 생긴다. 그렇다면 이 값을 설정파일에서 읽어와 넣는 형식으로 변경한다면 값이 변경될 때마다 기본 코드 파일(jar, war)은 변경할 필요 없이 설정파일만 변경하여 실행하면 된다. 설정 파일에서 값을 가져오는 방법은 여러 ..
-
비동기에 대해 알아보자. 2탄 (Executor 설정법)Study/Spring 2023. 10. 31.
https://d1tt0.tistory.com/entry/비동기에-대해-알아보자-Async-학습노트 비동기에 대해 알아보자. (@Async 학습노트) 일단, 동기와 비동기의 차이점을 집고 넘어가자! 동기 - 직렬적으로 수행하는 방식 - 앞의 동작이 끝난 다음 이후의 동작이 시작한다. - 앞의 동작이 끝난 다음 시작하기에 앞의 동작에 대한 결과 d1tt0.tistory.com 위 글에서 비동기에 대해서 알아보고, Executor를 구현하여 쓰레드를 재사용할 수 있게 설정해 줬다. 이제 Executor의 설정을 통해 몇 개의 쓰레드를 관리할 것인지 설정하는 법을 정리해보자. 📕 이론 CorePoolSize - 쓰레드 풀에서 자유롭게 사용할 수 있는 쓰레드의 수 - 기본 설정 : 1 MaxPoolSize - ..
-
비동기에 대해 알아보자. (@Async 학습노트)Study/Spring 2023. 10. 31.
일단, 동기와 비동기의 차이점을 집고 넘어가자! 동기 - 직렬적으로 수행하는 방식 - 앞의 동작이 끝난 다음 이후의 동작이 시작한다. - 앞의 동작이 끝난 다음 시작하기에 앞의 동작에 대한 결과를 알 수 있다. 비동기 - 병렬적으로 수행하는 방식 - 앞의 동작이 끝나기 전에 다음 동작이 시작한다. - 앞의 동작이 끝나기 전에 시작했기 때문에 앞의 동작에 대한 결과값을 알기 어렵다. 📕 학습노트 BASIC SETTING 스프링 부트와 롬복 설정 Controller와 Service를 통한 테스트 로그를 통해서 쓰레드명을 확인 가능 @EnableAsync @SpringBootApplication @EnableAsync public class AsynctestApplication { public static v..