Bean과 Configuration Metadata

2025. 6. 11. 11:23Spring Framework/Spring IoC

🌱 Bean이란?

스프링에서 애플리케이션의 주요 구성 요소이자 IoC 컨테이너가 관리하는 객체를 빈(Bean)이라고 부른다.
Spring IoC 컨테이너는 한개 이상의 Bean을 관리한다.

Bean은 Spring IoC 컨테이너가 생성하고, 관리하며, 의존성을 주입하는 객체다.
실제로는 단순한 자바 객체(POJO)이지만, 컨테이너의 관리 대상이 되면 Bean이라고 부른다.

쉽게 말해, 개발자가 new로 생성하는 것이 아니라, IoC 컨테이너가 대신 만들어서 필요한 곳에 넣어주는 객체를 말한다.

빈은 다음과 같은 과정을 거쳐 Spring IoC 컨테이너에 의해 관리된다.

  • 인스턴스화 (객체 생성)
  • Dependency Injection(의존성 주입)
  • 관리(라이프 사이클 등 제어)

🌱 Bean의 구성 메타데이터(Configuration Metadata)

Configuration Metadata는 Spring IoC 컨테이너가 어떤 객체(Bean)를 생성하고, 어떤 방식으로 의존성을 주입하며, 어떻게 초기화·소멸시킬 것인지에 대한 정보다.즉, "Spring IoC 컨테이너가 어떤 Bean을 어떻게 다뤄야 할지 알려주는 설계도"

 

📦 구성 메다데이터의 주요 요소 및 역할

요소 요소 역할
Bean 이름 Bean을 식별하는 ID
어떤 클래스를 어떤 이름으로 Bean으로 만들지 지정
Bean 클래스  생성할 객체의 클래스 타입
의존성 정보 어떤 Bean을 주입할지 어떤 Bean을 주입할지 지정
생명주기 메서드 초기화, 소멸 콜백 메서드 초기화, 소멸 메서드 정의
Scope 객체 생성 범위 Bean이 얼마나 자주 생성될지 지정

 

 

📦 구성 메타데이터를 선언하는 3가지 방법

1. 자바 기반 메타데이터(Java Configuratoin Metadata)

@Configuration
public class AppConfig {

    @Bean
    public UserService userService() {
 	   return new UserService();
    }
}

▶ @Configuration : 구성 클래스임을 선언

@Bean : 해당 메서드의 반환 객체를 Bean으로 등록

 

2. 어노테이션 (Annotation) 기반 메타데이터

컴포넌트 스캔을 통해 자동으로 구성 정보를 수집

@Component
public class UserService  {
        ...
}

▶ @Component, @Service, @Repository, @Controller 등 스테레오 타입으로 등록

▶ 내부적으로 @ComponentScan(범위지정)에 의해 Bean으로 자동 등록됨

 

3. XML 기반 구성 메타데이터

<beans>
    <bean id="userService" class="com.example.UserService">
        <property name="userRepository" ref="userRepository"/>
        <property name="level" value="admin"/>
    </bean>
</beans>

▶ bean 태그로 Bean 등록

▶ property 태그로 의존성 주입

 

구성 메타데이터 처리 흐름

1. Spring Container 생성
2. 설정 정보 읽기 (Java, Annotation, XML)
3. Bean Definition 분석 및 등록
4. Bean 생성 및 의존성 주입
5. 초기화 → 사용 → 소멸 처리

 

 

 

 

'Spring Framework > Spring IoC' 카테고리의 다른 글

Bean의 인스턴스화 방법  (0) 2025.06.11
Bean 이름 지정 (Naming Beans)  (0) 2025.06.11
Bean Definition(정의)  (0) 2025.06.11
Spring IoC Container  (1) 2025.06.11
Spring IoC란?  (0) 2025.06.11