반응형

Di 6

[Kotlin 공식 문서 정리] 27. Reflection과 KClass

Kotlin을 사용하다 보면 클래스나 함수의 정보를 코드 실행 중에 다뤄야 하는 상황을 마주하게 됩니다.예를 들면 다음과 같습니다.어떤 클래스의 이름이나 프로퍼티 목록이 필요할 때어노테이션이 붙어 있는지 검사해야 할 때DI, 직렬화, 테스트 도구처럼 범용 라이브러리를 만들 때이런 요구를 해결하기 위해 Kotlin은 Reflection API를 제공합니다.이 글에서는 Kotlin 공식 문서의 Reflection, KClass를 기준으로, Reflection이 무엇인지, 어디까지 사용해야 하는지를 정리합니다.1. Reflection이란 무엇인가?Reflection은 프로그램이 자기 자신의 구조를 런타임에 들여다보는 기능입니다.즉, 클래스, 함수, 프로퍼티 같은 요소를 “값”처럼 다룰 수 있게 해줍니다.Kot..

Backend Core/Kotlin 2026.01.25

[Spring 공식문서 정리] 5. 의존성 주입의 실제 – 생성자 주입과 프록시의 등장

4편에서는 Bean이 생성되고 초기화되며, 어떤 과정을 거쳐 소멸되는지까지 Bean 생명주기 전체 흐름를 살펴봤습니다.이번 글에서는 그 생명주기 안에서 가장 중요한 단계 중 하나인 의존성 주입(Dependency Injection)이 실제로 어떻게 동작하는지를 다뤄보겠습니다.특히,왜 생성자 주입을 권장하는지필드 주입은 왜 문제가 되는지주입 대상이 언제 프록시로 바뀌는지를 공식문서 흐름에 맞춰 정리합니다.1. 의존성 주입은 “생성 이후”에 일어난다먼저 가장 많이 오해되는 부분부터 짚고 가겠습니다.의존성 주입은 Bean 생성과 동시에 일어나지 않는다Spring의 실제 순서는 다음과 같습니다.Bean 인스턴스 생성의존성 주입초기화 콜백 실행즉, 생성자 호출이 끝난 이후에야 다른 Bean과의 연결이 이루어집니다..

[Spring 공식문서 정리] 4. Bean 생명주기 완전 정리 – 생성부터 소멸까지

3편에서는 Spring IoC 컨테이너에 Bean이 어떻게 등록되는지를 살펴봤습니다.이번 글에서는 그 다음 단계, 등록된 Bean이 언제 생성되고, 어떤 과정을 거쳐 사용되다가, 언제 소멸되는지를 정리해보겠습니다.Bean 생명주기는DI가 안 되는 이유@Transactional이 적용되지 않는 이유초기화 로직이 예상과 다르게 동작하는 이유를 설명해주는 핵심 개념입니다.1. Bean 생명주기를 한 문장으로 정리하면Spring 공식문서 기준으로 Bean 생명주기는 다음과 같이 요약할 수 있습니다.Bean 정의 등록 → Bean 생성 → 의존성 주입 → 초기화 → 사용 → 소멸 중요한 점은, “등록”과 “생성”은 전혀 다른 단계라는 것입니다.컴포넌트 스캔이나 @Bean 등록은 설계도(BeanDefinition)..

[Spring 공식문서 정리] 3. Bean은 어떻게 등록되는가 – ComponentScan과 Configuration의 역할

2편에서는 Spring 애플리케이션의 출발점인 IoC 컨테이너(ApplicationContext)가 언제, 어떻게 만들어지는지를 살펴봤습니다.컨테이너가 만들어졌다면 다음 질문은 자연스럽게 이어집니다.“그럼 이 컨테이너 안에는 어떤 객체들이, 어떤 기준으로 들어가게 될까?”이번 글에서는 Spring이 Bean을 컨테이너에 등록하는 방식을 공식문서 흐름에 맞춰 정리해보겠습니다.1. Bean이란 무엇인가Spring에서 Bean은 단순한 객체가 아닙니다.한 문장으로 정의하면 다음과 같습니다.Spring IoC 컨테이너가 생성하고, 관리하며, 생명주기를 책임지는 객체즉, new 키워드로 직접 생성한 객체는 Spring 관점에서는 Bean이 아닙니다.컨테이너의 관리 대상이 되느냐, 이것이 Bean과 일반 객체를 가..

[Spring 공식문서 정리] 2. IoC 컨테이너의 정체 – ApplicationContext는 언제 만들어질까?

1편에서는 Spring Framework가 어떤 문제를 해결하려고 등장했는지, 그리고 그 핵심 철학이 IoC(Inversion of Control)라는 점을 살펴봤습니다.이번 글에서는 그 IoC를 실제로 구현하는 존재, IoC 컨테이너의 정체를 본격적으로 파헤쳐보려고 합니다.우리가 흔히 사용하는 @Service, @Component, @Autowired 같은 기능들은 모두 이 컨테이너 위에서만 의미를 가집니다.1. IoC 컨테이너란 무엇인가IoC 컨테이너는 한 문장으로 정리하면 다음과 같습니다.애플리케이션에 필요한 객체를 생성하고, 의존성을 연결하며, 생명주기를 관리하는 존재 Spring에서 이 역할을 수행하는 것이 바로 ApplicationContext입니다.즉, Spring 애플리케이션은 단순히 ma..

[Spring 공식문서 정리] 1. Spring Framework는 무엇을 해결하려 했을까

Spring을 사용하면서 우리는 자연스럽게 이런 문장들을 말합니다.“이건 스프링이 알아서 해줘요”“DI라서 테스트하기 좋아요”“설정은 Boot가 자동으로 해주잖아요”하지만 정작 Spring이 왜 이런 구조를 가지게 되었는지, 그리고 어떤 문제를 해결하려고 만들어졌는지를 정확히 설명하기는 쉽지 않습니다.이 시리즈의 첫 글에서는 코드를 거의 다루지 않고, Spring Framework가 등장하게 된 배경과 핵심 철학부터 정리해보려고 합니다.1. Spring 이전의 Java 서버 개발은 무엇이 문제였을까Spring이 등장하기 전, 엔터프라이즈 Java 개발의 중심에는 EJB(Enterprise JavaBeans)가 있었습니다. EJB는 “대규모 엔터프라이즈 애플리케이션”을 목표로 설계되었지만, 실제 개발자 경..

반응형