Spring 을 다시 공부하기 시작하면서 기본 개념부터 공부하기로 했다.
그래서 가장 기본이 되는 개념이라 생각되는걸 찾아보며 아래 정리
먼저 spring의 특징
IOC : Inversion of control - 제어의 역전
각각의 객체는 자신의 로직을 실행하는 역할만 담당하고, 전체 제어 흐름은 AppConfig가 가져감. 이렇듯 프로그램의 제어 흐름을 직접 에어하는게 아니라 외부에서 관리되어지는 것이 제어의 역전 IOC 라고 함.
DI : Dependency Injection - 의존성 주입
DI는 IoC의 특정화된 하나의 방식. 각 코드의 의존성을 분리하고, 이를 외부에서 의존성을 결정하고 주입함. 이를 통해 관계를 동적으로 설정할수 있어 유연해짐.
아래는 Spring이 돌아가는 것의 메인 구성 요소라고 할수 있을까
IoC Container / DI Container
이런 의존관계를 설정해주는 클래스를 말함. Spring 에서는 IoC 보다 DI 가 좀더 대표적인 동작 원리로 말할수 있어 DI Container 라고 부르는게 더 맞다고 함.
또한 전체적인 라이프사이클을 관리함.
방법1 : xml - 가장 고전적인 방법. 현재 잘 사용 안됨.
방법2 : java configuration (생성자 주입. 가장 보편적으로 사용됨)
ioc container에 @Configuration을 쓰고 @Bean으로 등록해주면 됨.
방법3 : component scan. 각각 컴포넌트에 @Componet 어노테이션 을 쓰고, 설정 파일에서 @ComponentScan을 사용함
Bean
Bean 이란 DI Container 가 관리하는 각각의 컴포넌트라고 할수 있다.
컨테이너는 빈을 싱글톤으로 관리함. (각 bean은 하나의 객체만 생성된다는것)
싱글톤이 아니라 프로토타입 빈도 생성할수 있음.
'Spring' 카테고리의 다른 글
[Spring] 02. Container 생성방법 (1) | 2024.01.28 |
---|---|
[Spring] 03. Bean 등록 방법 (0) | 2024.01.24 |