Spring Framework/Spring IoC(9)
-
Spring의 Method Injection
일반적인 어플리케이션 시나리오에서, Spring 컨테이너에 등록된 대부분의 Bean은 싱글톤이다. 싱글톤 Bean이 다른 싱글톤 Bean과 협업하거나, 프로토타입(Non-singleton) Bean이 또 다른 프로토타입 Bean과 협업하는 경우, 보통은 한 Bean을 다른 Bean의 프로퍼티로 정의하여 의존성을 처리한다. 🔨 Method Injection란?Method Injection은 싱글톤 빈이 프로토타입 빈을 참조할때, 새로운 인스턴스를 주입받아야 하는 경우 발생하는 문제를 해결하는 주입방법이다. ❔ 왜 필요할까Spring의 대부분의 빈은 디폴트로 싱글톤으로 관리된다. 하지만 때때로 싱글톤 빈이 프로토타입 빈을 사용해야 하는 상황이 발생할 수 있다.상황문제매번 새로운 인스턴스가 필요할 때생성자/..
2025.06.20 -
DI에서 Depend on, Lazy, Autowiring 사용
어떤 Bean이 다른 Bean의 의존성이라면, 일반적으로 하나의 Bean이 다른 Bean을 프로퍼티(속성)로 갖는 경우를 말한다.🧩 @DependsOn 사용@DependsOn은 Spring IoC 컨테이너가 Bean을 초기화할 때, 특정 Bean 보다 먼저 초기화되어야 할 Bean을 지정하는 어노테이션이다. @DependsOn을 사용시 Bean 간의 초기화 순서를 제어할 수 있고,데이터베이스 연결, 외부 리소스 로드 등 특정 Bean을 먼저 실행해야 할 경우 유용하다. 📃 예제 config 패키지@Configurationpublic class AppConfig { @Bean @DependsOn({"loggerInitializer", "userService"}) // 두 빈이 먼저 초기화된..
2025.06.18 -
Dependency Injection(DI, 의존성 주입)
의존성 주입은 객체가 자신이 필요한 의존성(즉, 함께 작업할 다른 객체들)을 생성자 아규먼트, 팩토리 메서드 아규먼트, 또는 객체가 생성되거나 팩토리 메서드에서 반환된 후 설정되는 프로퍼티(properties)를 통해 정의하는 방식이다.Spring IoC 컨테이너는 Bean을 생성할 때 이러한 의존성들을 주입힌다.이 과정을 제어의 역전(Inversion of Control, IoC)라고 한다. 💡 의존성 주입의 장점결합도 감소클래스 간 의존성이 약해져, 변경에 유연해진다.유지보수 용이의존 객체를 쉽게 교체하거나 확장할 수 있다.단위 테스트 용이실존 의존 객체 대신 Mock, Stub 등을 주입하여 테스트가 가능하다.가독성과 명확성어떤 의존성이 필요한지 코드만 보고도 명확히 알 수 있다. 💡 의존성 ..
2025.06.18 -
Bean의 인스턴스화 방법
Spring에서 "Bean을 인스턴스화 하는 방법", 즉 Bean 객체를 어떻게 생성하고 관리하는지에 대한 방법이다. Spring은 Bean을 생성할 때 여러 가지 방식으로 객체를 인스턴스화할 수 있다. 대표적으로 :방법설명디폴트 생성자 사용클래스의 생성자를 호출해 인스턴스를 만듦정적 팩토리 메서드static 메서드를 호출해 객체를 생성인스턴스 팩토리 메서드객체의 메서드를 호출해 생성 1️⃣ 디폴트 생성자 사용Spring이 클래스의 생성자를 호출해서 객체(Bean)를 만드는 방식이다.가장 기본적이며, 대부분의 Bean은 이 방식으로 생성된다. 📃 예제config 패키지@Configuration@ComponentScan(basePackages ="package defaultconstructor.servi..
2025.06.11 -
Bean 이름 지정 (Naming Beans)
Spring에서는 모든 Bean은 하나 이상의 식별자(Identifier)를 가진다. 이 식별자들은 같은 컨테이너 내에서 반드시 고유해야 한다. 보통 하나의 Bean은 하나의 식별자만 가지지만, 필요하다면 여러 개의 식별자(별칭)를 가질 수 있으며, 이때 추가 식별자는 Alias(별칭)로 간주된다.Bean의 이름을 지정하는 다양한 방법이 존재한다. 🔵 기본 이름 지정 Spring은 클래스 이름을 camelCase로 바꾼 이름을 기본 Bean 이름으로 사용한다. 1. @Component, @Service 등 사용 시@Componentpublic class MyService {}→ Bean 이름 : myService 2. @Bean 사용 시메서드 이름이 기본 Bean 이름이 된다.@Configuratio..
2025.06.11 -
Bean Definition(정의)
Spring IoC 컨테이너는 한개 이상의 Bean을 관리하며, Bean은 구성 메타데이터(Configuration Metadata)를 기반으로 생성된다.Spring Framework에서 Bean Definition은 Spring IoC 컨테이너에 의해 관리되는 객체(Bean)의 정의서라고 볼 수 있다. 이 Definition에는 어떤 클래스를 인스턴스화 할지, 어떤 의존성을 주입할지, 어떤 스코프를 가질지 등 다양한 메타데이터가 포함된다. ⚙️ Bean Definition이란?Bean Definition는 Spring IoC 컨테이너가 Bean을 생성하고 관리하기 위해 참조하는 Metadata다.이 메타데이터의 주요 정보는 :클래스 이름해당 Bean이 실제로 사용할 구현 클래스의 이름Bean의 동작 관..
2025.06.11