본문 바로가기
CS/Spring

[스프링 프레임워크 핵심기술] IoC 컨테이너 #1

본 게시물은 인프런의 백기선님 스프링 프레임워크 핵심기술 강의를 보고 간략하게 정리한 글입니다.

 

 

◎ 스프링 IoC 컨테이너와 빈

IoC = Inversion of Control (의존관계 주입이라고도 부른다.) 

   - 의존 객체를 직접 만드는 건 아니고, 생성자를 사용해 주입받아 만들어서 쓰는 방법을 뜻한다.

      왜 쓰는가? > 이게 다 노하우가 쌓여있는 프레임 워크라고...

   - BeanFactory 객체를 통해서 빈 설정 소스로부터 빈의 정의를 읽어들이고, 구성하고, 제공한다. 그렇지만 실제 주로 사용하는 건 ApplicationContext라는 인터페이스이다. BeanFactory를 상속받고 있어서 같은 일을 할 수 있다.

 

빈Bean

: IoC 컨테이너에 들어있는 객체. 컨테이너를 컨테이너라고 부르는 이유도 빈을 담고 있어서다.

   - @Autowired, @Service, @Repository 등의 어노테이션을 사용해서 Bean으로 등록한다. cf) 스프링 IoC와 관련이 없다면 빈이 아니다. 

   - 장점

1. 의존성 관리가 가능하다 (의존성 주입을 받기 위해서는 빈이 되어야 함.

2. 스코프 설정이 쉽다. (주로 싱글톤singleton을 사용한다.) 

 *싱글톤은 객체를 하나만 만들어서 사용하는 것, 프로토 타입은 매번 다른 객체를 만들어서 사용하는 것이다. 디폴트는 싱글톤이다. 

3. 라이프사이클 인터페이스 사용이 가능하다

 

 

 

◎ ApplicationContext와 다양한 빈 설정 방법

● 직접 application.xml를 만들어서 id, class, scope등을 일일히 등록해주는 방법. property에 따라 참조해서 다른 bean의 id를 사용해야 한다. 이렇게 모든 설정을 일일히 해서 가져와 사용하면 되는데, 굉장히 번거롭다.

xml말고 java에서는 @Configuration을 쓴 다음 일일히 @Bean을 등록해주면 된다. 이것도 번거롭다.

 

● 그래서 등장한게 component-scan이다. package안의 어노테이션을 스캔해서 설정하는 방식. @Service, @Repository등 Component에서 확장된 것들을 위에 써주면 빈으로 등록된다. 의존성으로 주입하려면 @Autowired를 써야한다.

@ComponentScan(basePackageClasses = )을 사용해서 basePackageClasses에 스캔하고 싶은 클래스를 넣어주면 해당 클래스가 위치한 곳부터 component-scan을 실행해서 상단에서 말한 어노테이션이 들어있는 클래스들을 Bean으로 등록시켜준다. 지금 주로 사용하는 방식. 

'CS > Spring' 카테고리의 다른 글

[스프링 부트 개념과 활용] 의존성 관리  (0) 2020.08.15