IoC(Inversion of Control)(의존 관계 주입) : 어떤 객체가, 자신이 사용하는 의존 객체를 객체 내부에서 스스로 직접 만들어 사용하는게 아니라, 외부에서 주입 받아 사용하는 방법.
빈(Bean) : Spring IoC(Inversion of Control)(의존 관계 주입)(Dependency Injection) container가 관리하는 Java 객체.
빈(Bean)
- Spring IoC container가 생성, 제공, 및 관리하는 Java 객체.
- 장점
- Scope
- 싱글톤 : 맨 처음 애플리케이션 전체 구동 시 Java 객체 한 개만 생성하여, 매번 요청마다 이 동일한 객체를 제공.
- 프로토타입 : 요청마다 매 번 새로운 Java 객체를 만들어 제공.
- 라이프사이클 인터페이스 지원 : IoC container에 등록된 bean에 대해서만 국한된 이야기. ex) @PostConstruct.
- Scope
/*
어떤 class 내부에 한 method가 있을 때,
이 method 위에 @PostConsturct 애노테이션이 붙어있다면,
해당 class가 IoC container에 의해 생성된 직후(Post)에
@PostConstruct가 붙어있는 method가 실행된다.
*/
@PostConstruct
public void example(){
System.out.println("이 method가 들어있는 class의 객체가
IoC container에 의해 생성된 직후(Post)에 이 method가 실행됨.");
}
스프링 IoC 컨테이너
- BeanFactory라고도 한다.
- 빈(Bean)들의 중앙 관리 저장소
- 빈 설정 파일들로부터 빈 정의들을 읽어서 빈을 만들고, 제공 및 관리한다.
의존성의 문제점 : 주입받은 외부 객체의 클래스를 구현하지 않고서는, 외부 객체를 주입받아 사용하는 클래스의 객체 단위 테스트를 할 수 없다. 왜냐하면, 외부 객체를 주입받아 사용하는 클래스는 외부 객체에 "의존"하고 있기 때문이다. 이것의 의존성의 문제점이다.
'Spring (Boot)' 카테고리의 다른 글
API (@ResponseBody) (0) | 2020.11.17 |
---|---|
@RequestParam (0) | 2020.11.17 |
Spring Boot 정적(static) 컨텐츠 처리 방식 (0) | 2020.11.17 |
Spring Boot viewResolver (template engine 방식) (0) | 2020.11.17 |
빈(Bean) 설정 파일 (0) | 2020.03.29 |
댓글