spring boot 5

WebFlux의 기본 개념 (Event Loop, Lazy Evaluation, publish-subscribe)

이 글은 Netty + WebFlux가 작동하는 방식에 대한 기본 개념들을 설명합니다. Netty + WebFlux의 특징을 보면 적은 리소스로 많은 사용자의 동시 요청을 받을 수 있고,I/O 작업이 많은 경우 더 효율적입니다. Spring WebFlux는 "비동기", "논블로킹", "리액티브 스트림" 이라는 용어로 소개되지만, 처음 접할때는 다소 복잡하게 느껴질 수 있습니다. 그런데 WebFlux의 구조는 아래 개념만 알고있으면 사실 크게 복잡하지 않습니다.이벤트 루프지연 평가구독-발행 이벤트 루프이벤트 루프는 하나의 스레드가 반복적으로 이벤트를 감지하고, 이를 순차적으로 처리하는 실행 모델입니다 Java 개발자가 이해하기 쉽도록 코드로 표현하면 아래 코드와 같습니다.void eventWorker() ..

Spring 2025.07.01

Spring Security 없이 OAuth2 클라이언트 직접 구현

OAuth2 인증 절차OAuth2 클라이언트를 Spring Boot 만 사용하여 구현해보겠습니다.Spring Security 없이, 순수 HTTP 통신과 세션 기반으로 인증 흐름을 직접 설계함으로써OAuth2의 내부 동작을 보다 깊이 있게 이해해보는 것이 목적입니다. 매우 간단합니다. 깃허브에서 전체 코드 확인하기:https://github.com/youseonghyeon/oauth2-client GitHub - youseonghyeon/oauth2-client: oauth2-client 구현을 위한 리포지토리oauth2-client 구현을 위한 리포지토리. Contribute to youseonghyeon/oauth2-client development by creating an account on Gi..

Architecture 2025.04.13

[중요!] @Transactional(AOP)가 동작하지 않는 이유 this.update();

이전부터 작성하고 싶었던 주제였습니다. @Transactional 같은 AOP를 사용할 때 종종 발생하는 문제 중 하나는"어노테이션을 붙였는데 값이 업데이트되지 않지? AOP가 작동하지 않지?" 같은 상황입니다.코드상으로도 문제없어 보이고 에러도 나지 않지만, 기능이 제대로 작동하지 않을 때가 있죠. 다음 예제 코드에서 그 문제를 확인해 보겠습니다.updateUserWithLogging() 메서드를 호출하면 로그는 정상적으로 출력되지만,user 객체의 업데이트가 이루어지지 않는 문제가 있습니다. 여기서 @Transactional이 적용되어 있으므로 TransactionManager가 실행되어야 합니다. 그러나 UserController에서 updateUserWithLogging() 메서드를 호출할 경우 ..

Spring 2024.10.31

스프링 의존성 주입(DI)

Spring 프레임워크의 핵심 기능 중 하나는 의존성 주입(DI, Dependency Injection)입니다. DI는 객체 간의 결합을 줄이고 코드의 유연성과 확장성을 높이는 설계 방식으로, 스프링에서는 이를 통해 객체 간의 관계를 간단하게 설정할 수 있습니다. 1. 의존성 주입(DI)란?의존성 주입(DI)이란 객체가 사용할 의존성을 외부에서 주입해주는 설계 패턴입니다. 전통적인 객체 지향 프로그래밍에서는 객체 내부에서 필요한 의존성을 직접 생성하거나 설정합니다. 하지만 DI를 사용하면 외부에서 필요한 의존성을 전달받아 객체가 스스로 관리할 필요 없이 주어진 의존성만 사용할 수 있게 됩니다. 예시public class OrderService { private final PaymentService ..

Spring 2024.10.30

Spring Boot AutoConfiguration: 작동 원리와 성능 최적화 방법

AutoConfiguration을 사용하는 Class는 다음과 같은 것들이 있습니다.DataSource, TransactionManager, jdbcTemplate 등우리가 흔이 사용하는 것들이죠? 이 글에서는 AutoConfiguration의 작동 원리에 대해 배우고, 이를 사용해 개발 과정을 어떻게 최적화할 수 있는지에 대해 다루겠습니다. 글 순서AutoConfiguration 등록 순서AutoConfiguration 작동 원리AutoConfiguration 활용하기(라이브러리 제작)AutoConfiguration 성능 최적화AutoConfiguration 사용 시 주의사항1. AutoConfiguration 등록 순서우선, Spring Boot는 애플리케이션 시작 시 @ComponentScan이 실..

Spring 2023.07.30