스프링 IoC 컨테이너
IoC = Inversion of Control - 의존 관계를 직접 만들어 사용하는 것이 아닌, 주입을 받아서 사용하는 방법
꼭 스프링이 아니더라도 직접 만들어 사용할 수 있다.
Container안에 들어있는 객체 - Bean
스프링 초기 - XML설정 -> Annotaion 기반의 DI지원
@Repository, @Service, @Autowired...
이런 어노테이션들을 사용하여 일반 POJO객체를 Bean으로 등록을 하고 일반적인 Class 역시 Bean으로 등록하고
Bean으로 등록되어 있는 객체를 손쉽게 주입받아 사용할 수 있다.
BeanFactory interface - IoC의 가장 핵심적인 인터페이스
Bean - IoC 컨테이너가 관리하는 객체
의존성 주입을 받기 위해서는 Bean으로 등록이 되어있어야 한다. -> 의존성을 주입받는 객체도 Bean으로 등록되어야 한다.
Spring IoC Container에 등록되는 Bean들은 기본적으로 Singleton scope(하나의 객체만 생성 )로 등록이 된다. - Prototype scope(매번 다른 객체를 만든다.)
Bean으로 등록되었을 때의 장점 - Spring이 제공하는 IoC 컨테이너를 사용하는 이유
- 쉬운 의존성 관리
- 라이프사이클 인터페이스를 사용하여 어떤 특정 Bean이 만들어 졌을 떄 추가적으로 작업을 할 수 있다.
ApplicationContext - BeanFactory보다 더 다양한 기능을 가지고 있는 인터페이스
XML설정을 통한 Bean 등록 및 주입
빈 설정파일을 만들어서 해당 빈 설정 파일을 사용하는 ApplicationContext를 만들어서 사용하면 된다.
단점 - Bean을 일일이 등록해줘야 한다.
context의 component-scan의 등장 - 지정된 Package부터 Bean(component 혹은 Component를 확장하는 Annotation을 가진 객체)을 scan하여 등록해준다.(스프링 2.5)
자바설정파일을 통한 Bean 등록 및 주입
AnnotationConfigApplicationContext()를 사용하여 해당 설정 파일을 넘겨준다.
@ComponentScan(basePackageClasses = 클래스이름.class)
basePackageClasses - 좀 더 Type Safe 하다.
지정된 애플리케이션(클래스)이 위치한 곳 부터 컴포넌트 스캐닝을 한다
'Spring' 카테고리의 다른 글
Spring Framework 3 (0) | 2019.12.05 |
---|---|
Spring Framework 2 (0) | 2019.12.04 |
1 (0) | 2019.08.25 |
SpringFramework 3 (0) | 2019.06.13 |
Spring Framework 2 (0) | 2019.06.13 |