녕의 학습 기록
[Spring 기본] 의존관계 자동 주입 (1) 본문
♪ 학습 내용
의존관계 주입 방법
** 의존관계 주입 방법
앞에서는 빈을 자동 등록하고 @Autowired를 이용해 의존관계 자동 주입하는 것 배웠다
이 방법을 통해 의존관계 주입하는 방법에는 4가지가 있다
- 생성자 주입
- 수정자 주입
- 필드 주입
- 일반 메서드 주입
* 생성자 주입
여태까지 학습하면서 했던 것들이 바로 생성자 주입..!!
스프링 컨테이너에서 스프링 빈을 등록하기 위해 객체를 생성,
이때 생성자로 호출하여 생성하고 반환하기 때문에 그 과정에서 의존관계를 주입한다
따라서 생성자 주입은 필수성을 지닌다
또한 생성자 주입은 생성자 호출할 시에 딱 한번만 호출되기 때문에(별도 설정을 만들지않는 한) 불변성을 가진다
만약에 생성자가 한개만 있다면 @Autowired 애노테이션을 생략해도 무방하다
생성자가 한개가 아니라면 아마 생성자 오버로딩인 경우를 뜻하는 거겠지?
* 수정자 주입(setter)
생성자가 아닌 setter 메서드를 이용해서 의존관계를 주입한다
수정자 주입은 *자바빈 프로퍼티 규약을 따른 것이라
*자바빈 프로퍼티 규약이란??
- 자바 객체 안의 필드를 직접 접근하지 않고, getter setter를 이용해 접근하는 방식이다
* 필드 주입
말 그대로 필드에다가 빡 ! 주입하는 방식
처음 필드 주입 방식을 보자마자 너무 간결해서 입에서 욕이..
필드 주입은 보다시피 코드가 간결하다는 장점을 지니지만 외부에서 변경이 불가능하다는 단점이 있다!!
순수 자바 코드에서 new OrderServiceImple() 하여 객체 생성하면 접근 및 변경이 불가.
권장하지 않는다
( 필드 주입 해놓으면 @Autowired 애노테이션에 권장하지 않는다고 무려 인텔리제이가 경고를 주기까지 함 )
* 일반 메서드 주입
말그대로 생성자 나 setter 가 아닌 일반 메서드를 이용해서 주입하는 방식
보통은 생성자 주입과 수정자 주입 안에서 다 해결하므로 잘 사용하지 않는다고 한다.
* 의존관계 주입
여러 방식의 의존관계 주입을 알아보았다.
앞에서 학습했듯이 스프링 컨테이너는 두가지 라이프 사이클을 지님
- 스프링 빈을 등록하고
- 그들 사이에 의존관계를 자동으로 주입
그렇기 때문에 스프링 빈이 아닌 일반 클래스에서는 의존관계 자동 주입이 불가
무조건 스프링 빈으로 등록되어야 컨테이너가 의존관계 자동 주입해주기 때문에 너무나도 당연한 말이다.
♪ 다음 학습 내용
스프링 빈이 없을 경우 옵션처리 / 생성자 주입 / 롬복 라이브러리
스프링 핵심 원리 - 기본편 - 인프런 | 강의
스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., - 강의 소개 | 인프런...
www.inflearn.com
'Dev > Spring' 카테고리의 다른 글
[Spring 기본] 의존관계 자동 주입 (3) (0) | 2022.11.19 |
---|---|
[Spring 기본] 의존관계 자동 주입 (2) (0) | 2022.11.18 |
[Spring 기본] 컴포넌트 스캔 (2) (0) | 2022.11.12 |
[Spring 기본] 컴포넌트 스캔 (1) (0) | 2022.11.10 |
[Spring 기본] 싱글톤 컨테이너 (2) (0) | 2022.11.09 |