Spring Framework/Spring IoC(44)
-
Annotation-based Container Configuration
💡 Annotation-based Container ConfigurationSpring Framework는 오랫동안 XML 기반 구성을 핵심으로 사용해 왔지만, 현대의 Spring 개발에서는 어노테이션(Annotation) 기반 구성이 표준으로 자리 잡았습니다. 이 방식은 구성 메타데이터를 별도의 파일 대신 컴포넌트 클래스 자체에 직접 내장하여 코드를 훨씬 직관적이고 유지보수하기 쉽게 만듭니다.Spring이 어떻게 어노테이션 기반 구성을 지원하는지, 그리고 어떤 도구들이 사용되는지 자세히 알아보겠습니다. 🧠 어노테이션 기반 구성의 작동 원리Spring은 어노테이션 기반 구성을 위해 BeanPostProcessor를 활용합니다. 특정 어노테이션을 감지하고 해석하는 로직이 이 Post Processor ..
2024.11.14 -
Bean Scopes
📚 Bean Scopes이번 챕터에서는 Spring Framework에서 핵심적인 개념 중 하나인 Bean Scope에 대해 알아보겠습니다. Spring에서 Bean은 단순한 Java 객체가 아니라, Spring IoC 컨테이너가 관리하는 객체를 의미합니다. 여러분이 Bean 정의를 생성할 때, 사실은 해당 클래스의 실제 인스턴스를 생성하기 위한 '레시피'를 만드는 것과 같습니다.이 '레시피'라는 개념이 중요합니다. 왜냐하면 하나의 레시피(BeanDefinition)를 통해 여러 개의 객체 인스턴스를 만들 수 있기 때문입니다.🎯 Bean Scope의 역할과 중요성Spring은 단순히 객체를 생성하고 의존성을 주입하는 것을 넘어, 특정 BeanDefinition를 기반으로 생성되는 객체들의 Scope(..
2024.11.14 -
Method Injection
🌱 Spring Method Injection 정리Spring에서는 빈의 생명주기가 다를 때 발생하는 문제를 해결하기 위해 "메서드 주입(Method Injection)" 기능을 제공합니다.일반적인 의존성 주입(Dependency Injection) 방식으로 해결할 수 없는 경우 Lookup Method Injection, Arbitrary Method Replacement 등의 기법을 활용할 수 있습니다.1️⃣ Method Injection이란?📌 기본 개념🔹 싱글톤 빈이 프로토타입 빈을 참조할 때, 새로운 인스턴스를 주입받아야 하는 경우 발생하는 문제를 해결하는 방법🔹 Spring 컨테이너가 런타임에 동적으로 메서드를 오버라이드하여, 새로운 프로토타입 빈을 반환하도록 구현🔹 Spring이 제..
2024.11.14 -
Using depends-on, Lazy-initialized Beans, Autowiring Collaborators
🌱 Spring Bean Management: depends-on, Lazy-initialized Beans, AutowiringSpring에서는 빈(Bean)의 초기화 순서, 지연 로딩(Lazy Initialization), 자동 주입(Autowiring) 을 통해 효율적인 객체 생성 및 관리 를 수행할 수 있습니다.이번 정리에서는 이러한 개념들을 명확히 설명하고, 활용 방법을 소개하겠습니다.1️⃣ Using @DependsOn: 빈 초기화 순서 제어🔹 @DependsOn이란?특정 빈이 생성되기 전에 먼저 초기화해야 할 빈을 지정하는 어노테이션빈 간의 의존성을 명시적으로 정의하여, 초기화 순서를 강제할 수 있음다수의 빈을 순차적으로 초기화 가능✅ 예제: @DependsOn을 활용한 빈 초기화 순서 ..
2024.11.14 -
Dependencies
일반적인 엔터프라이즈 애플리케이션은 단일 객체(또는 스프링 용어로는 빈)로 구성되지 않습니다. 가장 단순한 애플리케이션조차도 몇 가지 객체가 함께 작동하여 최종 사용자가 일관된 애플리케이션으로 인식할 수 있도록 합니다. 다음 섹션에서는 독립적으로 정의된 여러 빈 정의에서 출발하여 객체들이 목표를 달성하기 위해 협력하는 완성된 애플리케이션으로 전환하는 방법을 설명합니다. Section SummaryDependency InjectionDependencies and Configuration in DetailUsing depends-on, Lazy-initialized Beans, Autowiring CollaboratorsMethod Injection
2024.11.14 -
Dependency Injection
Spring IoC 컨테이너는 빈(Bean)을 생성할 때 이 빈들의 의존성들을 주입(inject)합니다.이러한 과정은 본질적으로 제어의 역전(Inversion of Control, IoC) 의 개념을 따릅니다.이름 그대로, 의존성의 생성이나 위치를 스스로 제어하는 것이 아니라, 컨테이너가 대신 제어하게 되는 구조입니다.예전에는 객체가 필요한 의존성을 직접 생성하거나, Service Locator 패턴을 이용해 직접 위치를 찾아야 했지만, DI는 이를 반대로 뒤집어 컨테이너가 주입해주는 방식입니다.✅ DI 원칙의 효과DI 원칙을 적용하면 코드가 더 깔끔해지고, 결합도가 낮아집니다.객체는 의존성을 직접 찾지 않으며, 의존성의 위치나 클래스에 대해 알 필요도 없습니다.그 결과:클래스가 더 테스트하기 쉬워집니다..
2024.06.11