[Spring Framework] - Spring Container, Bean

김수빈·2022년 6월 18일
0

Spring

목록 보기
5/8

Spring Container, Bean

Container 란

컨테이너란 내부에 또 다른 컴포넌트를 가지고 있는 어떤 컴포넌트를 의미한다.

Spring Container

스프링 컨테이너는 내부에 존재하는 애플리케이션 빈의 생명주기를 관리한다.
Bean 생성, 관리, 제거 등의 역할을 담당한다.

인터페이스로 구현되어 있는 ApplicationContext 를 의미한다.

Application Context

  • Bean Factory 를 상속받아 확장한 것

1. XML, 애너테이션 기반의 자바 설정 클래스 로 만들 수 있다.

2. 이전에는 개발자가 XML을 설정해 주었지만, Spring Boot 에서는 사용하지 않게 되었다.

3. Bean 의 인스턴스화, 구성, 전체 생명 주기 및 제거까지 처리한다.

4. 스프링 컨테이너를 통해 원하는 만큼 많은 객체를 가질 수 있다.

5. 의존성 주입을 통해 애플리케이션의 컴포넌트를 관리한다.

5-1.서로 다른 빈을 연결해 애플리케이션의 빈을 연결하는 역할

5-2.모듈 간에 의존 및 결합으로 인해 발생하는 문제 해결

5-3.메서드를 호출하기 위해 필요한 매개 변수를 준비해서 전달하지 않음

Spring Container 를 사용하는 이유는 앞서 나온 IoC / DI 처럼 new 키워드의 사용을 지양하기 위해서 이다. 이를 통해 의존성을 낮추어 (결합도를 낮추어) 객체 지향 프로그래밍을 가능하게 해준다. 이때 사용되는 것이 Spring Container 이다.

스프링 컨테이너를 생성하는 과정

// Spring Container 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);

Bean

Spring Container에 의해 관리되는 재사용 소프트웨어 컴포넌트 (자바 객체)
Spring 컨테이너는 Bean 을 관리하며, 하나 이상의 빈을 관리한다.

1. 스프링 컨테이너에 등록된 객체: Spring Bean

2. @Bean 어노테이션이 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록

3. 빈은 클래스의 등록정보, 게터/세터 메서드를 포함

4. 빈은 컨테이너에 사용되는 설정 메타데이터로 생성

5. 설정 메타데이터

메타 데이터 : 데이터에 대한 구조화된 데이터로, 연관된 정보를 제공해주는 데이터

5-1. XML 또는 자바 애너테이션, 자바 코드로 표현합니다.
5-2. 컨테이너의 명령과 인스턴스화, 설정, 조립할 객체를 정의합니다.

정리

컨테이너는 먼저 객체를 생성하고 객체를 서로 연결

객체를 설정하는 단계를 지나 마지막으로 생명주기 전반을 관리

컨테이너는 객체의 의존성을 확인해 생성한 뒤 적절한 객체에 의존성을 주입

스프링은 스프링 컨테이너를 통해 객체를 관리

스프링 컨테이너에서 관리되는 객체를 빈(Bean)이라고 함

@Configuration : 구성정보를 담당하는것을 설정할때 @Configuration 을 붙여줍니다.
@Bean : 각 메서드에 @Bean을 붙이면 스프링 컨테이너에 자동으로 등록이 됩니다.

0개의 댓글