[Spring Basic] IoC와 DIBE/Spring2024. 1. 18. 21:56
Table of Contents
IoC - 제어의 역전
- 기존 프로그램들은 개발자의 의지에 따라 구현 객체를 생성하고, 연결하고 실행했다.
- 즉 프로그램의 제어 흐름을 개발자가 직접 조종했다.
- 하지만 스프링에선 해당 객체의 생성과 연결, 실행을 개발자가 아닌 스프링이 담당한다.
프레임 워크 vs 라이브러리
- 프레임워크는 내가 작성한 코드를 제어하고, 대신 실행하면 프레임워크
- 내가 작성한 코드를 직접 제어의 흐름을 제어하면 라이브러리
위의 그림처럼 나의 비즈니스 오브젝트(내가 구현한 객체)와 Configuration 메타 데이터를 가지고 스프링 이리저리 짬뽕해서
스프링 서버가 생성된다.
DI - 의존관계 주입
스프링이 DI를 하는 방법에는 네 가지가 있다.
- ⭐️ 생성자 주입 ⭐️
- Setter 주입
필드 주입일반 메서드 주입
생성자 주입
- 생성자 호출 시점에 딱 1번만 호출되는게 보장이 된다.
- 불변, 필수 의존 관계에 사용
Setter 주입
- 선택, 변경 가능성이 있는 의존 관계에 사용(나중에 바꿀 수 있으니)
- 자바빈 프로퍼티 규약의 수정자 메서드 방식을 사용하는 방법
필드 주입
@Autowired private MemberRepository memberRepository;
@Autowired private DiscountPolicy discountPolicy;
옛날에 많이 썼다. 쓰지말자
일반 메서드 주입
- 한번에 여러 필드을 주입 할 수 있다.
- 쓰지 말자
-> 어차피 @Autowired 등의 컴포넌트 스캔을 사용하면 생성자 주입 편하기도 하고 안전하다.
다음 강의 내용을 기반으로 정리했습니다.
https://www.inflearn.com/course/스프링-핵심-원리-기본편
'BE > Spring' 카테고리의 다른 글
[Security] 스프링 시큐리티 (0) | 2024.02.27 |
---|---|
[Spring Basic] 스프링 싱글톤 (0) | 2024.01.18 |
[Spring Basic] 스프링 컨테이너와 빈 (0) | 2024.01.18 |
[Spring Basic] 객체 지향 설계와 스프링 (0) | 2024.01.18 |