목록전체 글 (19)
개츠비
제가 AOP 를 공부한 이유는 빈 생성, 빈 처리기 같은 개념적인 내용 때문이 아니었습니다.@Transactional 어노테이션이 어떻게 TransactionInterceptor 까지 연결되는건지가 알고 싶었습니다. 1편에서 살펴본거처럼 @Transactional 이라는 AOP 어노테이션을 추가할 경우, MemberCommandService 가 Proxy 객체로 변화는 과정을 살펴보겠습니다.@Serviceclass MemberCommandService( private val memberRepository: MemberRepository) { @Transactional suspend fun createMember(command: MemberCreateCommand): Long { ..
Spring 내부 코드를 따라가며 Spring AOP가 어떻게 동작하는지 확인한 포스트팅입니다. AOP 란?AOP는 Aspect Oriented Programming의 약자, 즉 관점 지향 프로그래밍입니다.쉽게 말하면:공통 관심사를 분리·모듈화하여 관리하자!관심사 구분핵심 관심사(Core Concern)애플리케이션의 핵심 기능, 예: 비즈니스 로직공통 관심사(Cross-Cutting Concern)여러 모듈에서 반복되는 기능, 예: 로깅, 보안, 트랜잭션횡단 관심사(Cross-Cutting Concerns)공통 관심사가 어플리케이션에서 반복적으로 등장할 때, 이를 "횡단 관심사" 라고 합니다.AOP는 이 횡단 관심사를 분리하여 코드 중복 제거 + 로직 분리를 가능하게 합니다. AOP 주요 개념Aspect..
coRouter는 Spring WebFlux의 함수형 라우팅 DSL을 Kotlin Coroutine과 함께 사용할 수 있도록 확장한 것 입니다.// 일반 router DSLrouter { GET("/hello") { req -> ServerResponse.ok().bodyValue(Mono.just("Hello")) }}// coRouter DSLcoRouter { GET("/hello") { req -> ServerResponse.ok().bodyValueAndAwait("Hello") // suspend 지원 }}기존의 Reactive Streams(Mono, Flux) 를 사용하지 않고 Kotlin suspend 함수를 사용할 수 있어, 보다 직관적이고..
코틀린에서 컬렉션을 다룰 때, 자주 마주치게 되는 Iterable 방식과 Sequence 방식의 차이점에 대해 알아보겠습니다.2개의 방식에 대해서 동작 과정과, 성능, 어떤 경우에 사용하면 좋을지 알아보겠습니다.1. 각 방식의 코드/** * 반복 가능한 객체를 나타내는 인터페이스 * Collection의 기본이 되는 인터페이스로, for-each문 사용 가능 */interface Iterable { /** * Iterator 객체를 반환하여 요소들을 순회할 수 있게 함 * @return 이 Iterable의 요소들을 순회하는 Iterator */ operator fun iterator(): Iterator}Iterable은 모든 컬렉션의 기반이 되는 인터페이스로, 전체 연..
HTTP 프로토콜의 특징과 실시간 데이터 전송 문제HTTP는 기본적으로 Stateless 프로토콜입니다. (서버가 클라이언트 상태를 기억하지 않는다는 뜻입니다.) 즉, 클라이언트가 요청을 보내고 서버가 응답하면 연결이 종료됩니다.하지만 실시간으로 데이터를 계속 보내려면 어떻게 해야 할까요?이런 문제를 해결하기 위해 폴링, 롱 폴링, 웹소켓, SSE 방식이 나타나게 되었습니다. Polling / Long Polling / WebSocket / SSE 비교구분특징연결 방식적합한 상황Polling일정 주기로 서버에 요청다수의 짧은 연결간단한 주기적 업데이트Long Polling서버에서 클라이어트의 요청을 오래 붙잡고 있음요청당 1회 전송서버 변경 즉시 응답WebSocket양방향, 지속 연결복잡한 핸드셰이크채팅..