DI(Dependency Injection)의존성 주입
클래스간 의존성을 클래스 외부(인터페이스화)에서 주입하는 것
의존성 주입 장점
- 재사용성을 높여준다
- 테스트에 용이하다
- 코드 단순화(가독성)
- 종속성이 감소 → 변경에 민감하지 않다.
- 결합도(coupling)는 낮추면서 유연성과 확장성은 향상시킬 수 있다.
의존성 주입 방법
- Field(필드) 주입 - 필드에 @Autowired
- Setter(수정자) 주입 - setter 메소드 위에 @Autowired
- Constructor(생성자) **주입 - 생성자 위에 @Autowired ****
DIContainer (IoC Container)
Spring DI 컨테이너가 관리하는 객체를 **빈(bean)**이라고 하고, 이 빈(bean)들을 관리한다는 의미로 컨테이너를 빈 팩토리(BeanFactory) 라고 부른다.
빈 팩토리 = 스프링 IoC 컨테이너의 가장 최상위 인터페이스
BeanFactory와 ApplicationContext
- BeanFactory
Bean을 등록,생성,조회,반환 관리함.
보통은 BeanFactory를 바로 사용하지 않고, 이를 확장한 ApplicationContext를 사용함.
- ApplicationContext
Bean을 등록,생성,조회,반환 관리하는 기능은 BeanFactory와 같음
Spring의 각종 부가 서비스를 추가로 제공함
Spring Bean 등록방법
- Component Scan
- @Component 어노테이션을 명시하여 추가한다.
- 자바로 직접 등록
- SpringConfig클래스를 만들고 @Configuration, @Bean 사용
- xml 로 등록하는 법도 있지만 잘 안쓴다고함.
결론적으로 Spring Bean 이라는 것은 Spring DI 컨테이너에 의해 관리되는 객체이다. DI 컨테이너에서 관리한다는 의미는 객체를 생성하고, 생명주기(life Cycle)를 수행하고, 의존성 주입(Dependency Injection) 한다는 것을 말한다.
IoC(Inversion of Control)이란, 객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다.
'Spring' 카테고리의 다른 글
의존관계 자동 주입 (0) | 2022.08.31 |
---|---|
JPA 영속성 컨텍스트 (0) | 2022.08.12 |
Spring Transaction (0) | 2022.07.23 |
애플리케이션 구조 (0) | 2022.07.23 |
spring DB (0) | 2022.07.23 |
댓글