스프링 IoC 컨테이너
- BeanFactory
- 애플리케이션 컴포넌트의 중앙 저장소
- bean 설정 소스로 부터 bean 정의를 읽어들이고, 구성하고 제공한다.
- 컨테이너 안에 bean들이 들어있다.
- 초기 : xml 설정이 대세
- 애너테이션 기반의 DI
- bean에 등록이 되어있는 객체들을 손쉽게 주입받아 사용
다양한 라이프 사이클을 통해서 스프링의 기능 제공
Bean
스프링 IoC 컨테이너가 관리하는 객체.
public class Book {
private Date created;
private Date getCreated() {
return creadted;
}
private Date setCreated(Date created) {
this.created = creadted;
}
public BookStatus getBookStatus() {
return bookStatus;
}
public void setBookStatus(BookStatus bookStatus) {
this.bookStatus = bookStatus;
}
}
- 얘는 그냥 자바 빈
- 애너테이션이 있는 클래스 들은 autoscan으로 빈 등록 됨 → @Repository, @Service
- Scope
- 싱글톤 : 하나만 사용 → IoC 컨테이너에 등록되는 빈들은 기본적으로 싱글톤 스코프로 등록된다.
- 빈 등록 시 아무 애너테이션도 붙이지 않다면 기본값
- 미리 만들어놨던 객체 사용
- 런타임 시 성능최적화 유리
- db 접근이 많은 리포지토리 객체 등
- 프로토타입 : 매번 다른 객체를 사용
- 라이프사이클 인터페이스
- 라이프사이클 콜백 자체를 이용해서 부가적인 기능을 만들어낼 수도 있음