back-end/spring boot

스프링 컨테이너

study-minjeong 2024. 7. 18. 13:43

개념 및 기능

스프링 프레임워크의 핵심 컴포넌트이다.

자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들(bean)에게 추가적인 기능을 제공한다.

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

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

서로 다른 빈을 연결하여 애플리케이션 빈을 연결하는 역할을 한다.

 

 

사용 이유

객체 간의 의존성을 낮추어 결합도는 낮추고, 높은 캡슐화를 위해 사용된다.

 

 

종류

스프링 컨테이너는 BeanFactory와 ApplicationContext 두 종류의 인터페이스로 구현되어 있다. 

BeanFactory

- 스프링 컨테이너의 최상위 인터페이스

- 빈의 생성과 관계 설정 같은 제어를 담당하는 IoC 오브젝트

- getBean() 메서드를 통해 빈을 인스턴스화 할 수 있음

- @Bean 어노테이션이 붙은 메서드의 이름을 스프링빈의 이름으로 사용하여 빈을 등록

 

ApplicationContext

- 빈팩토리의 기능을 상속받아제공

- 빈을 관리하고, 검색하는 기능을 빈팩토리가 제공하고, 그 외의 기능을 제공

- 부가 가능 : MessageSource, EnvironmentCapable, ApplicationEventPublisher, ResourceLoader

 

 

생성 과정

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);

AppConfig 등의 구성 정보를 지정하여 스프링 컨테이너를 생성한다. 애플리케이션 클래스는 구성 메타데이터와 결합되어 ApplicationContext를 생성하고, 초기화한다.  

 

@Configuration
public class AppConfig {
   @Bean
   public TestService testService() {
   	  return new TestServiceImpl();
   }
}

AppConfig가 다음과 같이 설정되어있다고 하면, getBean()을 이용해서 스프링 빈을 얻을 수 있다.

TestService testService = applicationContext.getBean("testService", TestService.class);

* 빈 이름은 항상 다른 이름을 부여해야한다.