새소식

반응형
Spring/TobySpring6

토비의 스프링 6 - 스프링 컨테이너와 의존관계 주입

  • -
반응형

 

앞에서 관계 설정 책임의 분리를 위해서 도입된 ObjectFactory의 기능을 스프링의 BeanFactory가 대체한다.

(https://kkang-joo.tistory.com/142)

 

의존관계 주입(Dependency Injection)

원칙과 패턴에서 설명한 제어의 역전(IoC)은 스프링의 동작원리를 정확하게 설명하기에는 너무 일반적인 프레임워크 동작원리를 설명하는 용어이다. 

오프젝트의 의존관계에 대한 책임을 외부 오브젝트가 담당하게 하는 것을 의존관계 주입(DI)이라는 새로운 용어가 제안되었다. 

 

스프링 컨테이너

애플리케이션을 구성하는 오브젝트를 만들어서 담아두고 필요할 때 사용하도록 기능을 제공 - 컨테이너 

스프링 컨테이너는 Bean이라고 불리는 애플리케이션을 구성하는 오브젝트를 관리하는 기능을 담당한다. 

보통 오브젝트를 보관하는 것뿐 아니라 생명주기(life-cycle)까지 담당한다.

 

구성정보를 가져오는 다른 방법

@Bean, @Configuration 애노테이션이 붙은 구성정보 클래스 이외에도 다른 방법 정의가 가능하다.

예전에는 xml 파일을 이용해서 정보를 구성하기도 하였다. 

 

ObjectFactory에서 생성하는 메서드를 정의하고 @Bean을 붙이는 것 이외에도 

클래스 위에 @Component를 붙여 스프링컨테이너에게 알릴 수도 있다. 

다만, 해당 Component를 scan 할 수 있도록 @ComponentScan을 추가해주어야 한다. 

-> 이러한 방식이 SpringBoot를 통해서 손쉽게 스프링을 사용할 수 있게 해주는 내막이다. 

 

싱글톤 레지스트리(Singleton Registry)

싱글톤 패턴은 어떤 클래스를 애플리케이션 내에서 제한된 인스턴스 개수, 이름처럼 주로 하나만 존재하도록 강제하는 패턴 

이렇게 하나만 만들어지는 클래스의 오브젝트는 애플리케이션 내에서 전역적으로 접근이 가능 

 

스프링에서는 스프링 컨테이너를 통해서 하나의 오브젝트만 만들어지고 사용될 수 있도록 관리한다. 

이러한 의미에서 싱글톤 레지스트리라고 부르기도 한다. 

 

스프링의 빈이 생성되고 적용되는 범위를 빈의 스코프(scope)라고 부른다.

스프링은 기본적으로 빈 오브젝트가 싱글톤 스코프를 가지도록 한다. 필요에 따라 여러 개의 빈 오브젝트가 만들어지도록 할 수 도 있다. 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.