용어 정리
IoC : 제어의 역전
DI : 의존성 주입
Bean : spring이 관리하는 객체
IoC Container : Bean을 모아둔 컨테이너
DI (의존성 주입)을 한다?
가장 먼저 해야할 일은 객체 생성!
의존성 주입이란?
디자인결합도를 느슨하게 되도록 하며, 의존관계 / 역전원칙 / 단일책임 원칙 을 따르도록
클라 단에서 생성에 의한 의존성을 클라이언트의 행위로부터 분리하는 것
ex)
public class Dog{
private Animal animal;
public Dog(){
this.animal = new Dog;
}
}
의존성주입에 대한 예시
:: Dog객체는 Animal객체에 의존한다.
하지만 이렇게 되면 문제점이 생긴다.
- Animal을 수정하면 Dog도 수정이됨
- 부모객체를 바꾸면 자식 객체도 변경이 됨
IoC(Inversion of Control) 의미
:: 내부적으로 조작할 객체를 직접 생성하지 않고 외부로 부터 주입받는 기법을 의미미
:: 추가로 객체를 외부로 부터 주입해주는 작업을 DI(의존성 주입)이라 부른다.
:: 컴포넌트 의존관계 설정, 설정 및 생명 주기을 해결하기 위한 디자인패턴
Bean들의 의존관계를 연결해주는 역할
IoC Container(Spring Container) (=제어반전)의미
:: 스프링의 핵심 중 하나. Bean을 생성하고 의존성과 생명주기를 관리하는 컨테이너:: Bean으로 등록된 객체를
IoC Container로 부터 DI를 통해 가져와 사용할 수 있음
IoC Container는 Bean을 저장한다고 하여서, 또다른 말로는 BeanFactory라고 부른다.
BeanFactory는 하나의 인터페이스 이며 Application Context는 BeanFactory의 구현체를 상속 받고 있는 인터페이스!
다시 말해 IoC Container는 Application context의 구현체!
Bean
:: 컨테이너가 관리하는 객체를 Bean이라 부른다.
:: 기본적으로 싱글턴 패턴이다.
:: 빈 끼리는 DI가 가능!!!
아래의 에노테이션을 사용하면 Auto Scan이라는 과정을 거쳐 자동으로 해당 클래스를 자동으로 Bean으로 등록해준다.
:: @Controller , @RestController
:: @Service
:: @Repository
:: @Componert
추가로 @Bean 이라는 에노테이션은 개발자가 직접 작성한 클래스가 아닌 외부 라이브러리의 객체를 Bean으로 만들고 싶을 때 사용.
@ComponentScan :: 해당 에노테이션이 걸린 packages위치와 그 하위 packages를 전부 체크해서 @Component가
설정된 클래스들을 Bean 으로 등록
@Autowired --> 의존성 주입하기
크게 세가지 필드주입, 메서드(특히 Setter)주입, 생성자주입
'TIL' 카테고리의 다른 글
+ 18 인증 // 인가 그것이 무엇인가 + JWT기반 인증 (0) | 2023.07.01 |
---|---|
+17 Springboot DTO, CREATED, READ (0) | 2023.06.30 |
+15 제네릭스(Genrics) (0) | 2023.06.28 |
+14 spring boot의 필수 !Lombok application.properties (0) | 2023.06.25 |
+13 API / RESTful API / Apache Tomcat (0) | 2023.06.24 |