본문 바로가기
Spring

Spring Framework 1

by irerin07 2019. 12. 4.
728x90

스프링 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 하다.
지정된 애플리케이션(클래스)이 위치한 곳 부터 컴포넌트 스캐닝을 한다

728x90

'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