코루틴 기반 Spring 비동기 처리 (With WebFlux)
·
Language·CS/Java·Kotlin
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기Kotlin을 쓰기 시작하면서 가장 강력하다고 느낀 기능 중 하나가 코루틴(Coroutines)이었어요.Java의 Future, CompletableFature와 비교하면 훨씬 단순하고 가볍고, WebFlux와 결합하면 비동기 코드를 동기 코드처럼 읽을 수 있는 장점이 있습니다.이번 글에서는 코루틴의 기본 개념부터 Spring WebFlux에서의 활용, 그리고 실전 비동기 처리 예제까지 정리해봤어요.1. 코루틴 기본 개념 (suspend, launch, async)코루틴은 경량 스레드(lightweight thread)라고 표현되곤 하지만, 정확히는 스레드를 정유하지 않는 비동기 로직 실행 모델이에요.핵심 키워드는 suspend, launch,..
Kotlin + Spring Boot 프로젝트 환경 구성
·
Language·CS/Java·Kotlin
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기Java에서 Kotlin으로 개발 언어를 바꾸면서 가장 먼저 부딪히는 단계가 바로 "프로젝트 환경 구성"이었어요.Spring Boot는 Kotlin을 공식 지원하고 있지만, 몇 가지 설정을 알아두면 개발 경험이 훨씬 좋아지고, 반대로 설정을 잘못하면 JPA 문제나 Jackson 역직렬화 오류가 자주 발생할 수 있습니다.이번 글에서는 Spring Boot를 Kotlin으로 구성할 때 꼭 알고 있어야 하는 핵심 요소들을 정리했습니다.1. Gradle Kotlin DSL (build.gradle.kts)Kotlin DSL은 기존 Groovy DSL보다 타입 안정성이 높고 자동 완성이 잘 되어 생산성이 좋아요.여기서는 기본적인 Spring Boot +..
3. 확장 함수(Extension Function)로 Spring 코드 최적화
·
Language·CS/Java·Kotlin
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기확장 함수(Extension Function)로 Spring 코드 최적화하기Kotlin을 사용해 Spring 개발을 하면서 가장 크게 체감했던 이점 중 하나가 확장 함수(Extension Function)였어요.확장 함수는 기존 클래스에 기능을 “추가하되, 해당 클래스를 수정하지 않고도” 메서드를 붙일 수 있다는 점에서 Spring 애플리케이션 구조를 단순하게 만드는 데 정말 강력했습니다.이번 글에서는 Spring 코드에서 확장 함수를 어떻게 활용해 구조를 더 읽기 좋고 유지보수하기 쉽게 만들 수 있는지 정리해봤습니다.확장 함수 기초 개념확장 함수는 다음과 같은 방식으로 선언합니다:fun 클래스명.함수명(): 반환타입 { // this는 ..
2. Spring MVC를 Kotlin답게 작성하는 방법
·
Language·CS/Java·Kotlin
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기Java 기반으로 Spring MVC를 작성해오다가 Kotlin으로 전환하면서, 코드 구조가 훨씬 단순해졌습니다.특히 Controller, Service, Repository 흐름이 Kotlin 문법과 자연스럽게 맞물리면서 불필요한 보일러 플레이트 코드가 많이 줄었습니다.이번 글에서는 Spring MVC 구조를 Kotlin답게 작성하는 방법을 실제 코드 중심으로 정리했습니다.Controller / Service / Repository 기본 구조Kotlin으로 Spring 코드를 작성하면 가장 먼저 달라지는 부분이 "클래스 선언 방식"이었어요.Controller@RestController@RequestMapping("/users")class Us..
1. Kotlin을 처음 쓰는 Spring 개발자를 위한 핵심 문법 가이드
·
Language·CS/Java·Kotlin
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기근래 개발 연합 동아리 YAPP 27기에서 Server 파트로 활동하게 되었어요.OT에서 함께 프로젝트를 진행할 동료 Server 개발자와 기술 스택에 대해 이야기를 나누면서, 프로젝트는 하나의 언어로 맞추는 것이 좋겠다는 결론을 내렸습니다.저는 Java 기반 백엔드 개발자로 활동해왔고, 함께하는 동료는 Kotlin 개발자였어요. 자연스럽게 Kotlin을 사용하는 방향으로 논의하게 되었고, 예전부터 Kotlin을 배워보고 싶었던 만큼 이번 기회에 언어를 전환하기로 결정했습니다.이 글은 Java만 사용해온 백엔드 개발자가 Kotlin을 학습해 가는 과정을 기록한 내용으로 구성했습니다.총 5개의 글로 정리해볼까 생각 중이에요 1. Kot..
[Spring] Spring Batch: 대용량 배치 처리의 핵심 프레임워크
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기Spring Batch란?Spring Batch는 대용량 데이터를 효율적으로 처리하기 위한 배치 처리 프레임워크이다.주기적으로 반복되는 작업(예: 통계 계산, 로그 분석, DB 정리 등)을 안정적으로 실행하고, 실패 복구 및 재시작 기능까지 제공합니다.대량의 데이터를 "읽고 -> 가공하고 -> 저장하는" 흐름을 체계적으로 관리할 수 있게 도와주는 틀입니다.언제 사용할까?매일 자정에 주문 데이터 정산100만 건 이상의 로그를 DB에 저장CSV 파일을 읽어 데이터베이스에 이관사용자 가입 내역을 분석해 레포트 생성Spring Batch의 기본 구조Job: 전체 배치 작업의 단위하나의 Job은 여러 Step으로 구성Step: Job 안의 실행 단위It..
[Spring Security] 인증과 인가, 구조부터 이해하자
·
Backend/Spring Security
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기Spring Security 인증과 인가, 구조적으로 이해하기"Spring Security를 단순 설정이 아닌 구조로 이해해보기"1. Spring Security를 왜 공부해야 할까?Spring 기반의 웹 애플리케이션을 개발하다 보면 어느 순간 보안이라는 주제를 마주하게 된다.그리고 대부분은 다음과 같은 방식으로 시작한다."Spring Security? 일단 예제 코드 붙여놓고 나중에 이해하자."처음에는 @EnableWebSecurity나 configure(HttpSecurity http) 같은 코드가 마치 마법처럼 동작하는 것처럼 느껴진다. 실제로는 어떻게 작동하는지 모르지만, 우선 돌아가기만 하면 된다는 생각으로 넘어가게 된다.그러나 프로젝..
[Spring] Filter & Interceptor
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기서론웹 요청 흐름 속에서 필터와 인터셉터의 역할Spring Application에서 사용자의 요청은 단순히 컨트롤러에 바로 도달하지 않는다.요청은 여러 계층을 거쳐 처리되며, 이 과정에서 Filter와 Interceptor는 각각의 위치에서 중요한 역할을 수행한다.Filter: Servlet Container 수준에서 요청과 응답을 감싸며, 보안, 로깅, 인코딩 처리 등의 전역적인 전처리에 사용된다.Interceptor: Spring MVC의 DispatcherServlet 이후에 동작하며, 컨트롤러 실행 전후에 추가 로직을 삽입할 수 있다.결국, Filter & Interceptor는 웹 요청 흐름에서 공통 관심사(Cross-Cutting C..
✏️ [Spring] Bean 생명주기
·
Backend/Spring
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기Bean 생명주기란?스프링 컨테이너는 Bean을 등록할 때 다음과 같은 순서로 생명주기를 관리한다.생성자 호출 → 의존성 주입 → 초기화 콜백 → 사용 → 소멸 콜백Spring이 제공하는 다양한 방법을 통해 이 생명주기 단계마다 로직을 삽입할 수 있다.예제 코드로 알아보는 Bean 생명주기2-1. 기본 설정@Configuration@ComponentScan(basePackages = "com.example.lifecycle") public class AppConfig {}2-2. 생명주기 메서드를 정의한 Bean@Componentpublic class LifeCycleBean { public LifeCycleBean() { ..
[Spring] Spring Security OAuth 2.0 동작 원리
·
Backend/Spring Security
이 글은 Velog에서 이전한 글입니다. Velog 원문 보기OAuth 2.0이란?인증(Authentication)과 인가(Authorization)의 차이인증사용자가 진짜 본인인지 확인하는 단계4주로 ID/PW, OAuth 로그인, 지문/얼굴 인식 등을 통해 수행예시: Google 로그인 화면에서 이메일/비밀번호 입력인가인증된 사용자가 특정 리소스에 접근할 권한이 있는지 판단주로 권한(Role), 권한 수준(Scope)을 기반으로 동작예시: 로그인은 했지만 관리자 전용 페이지에 접근 불가, 학생은 성적 수정 불가능주요 용어 정리Resource Owner(리소스 소유자)서비스에 접근 권한을 가진 사용자실제로 보호된 리소스(예: 사용자 정보, 이메일 등)을 소유한 사람일반적으로 로그인하는 유저를 뜻함OAu..