티스토리 뷰
반응형
의존 관계 주입은 4가지 방법이 있다
- 생성자 주입
- setter 주입
- 필드 주입
- 일반 메서드 주입
생성자 주입
- 생성자 주입은 생성자를 통해 의존관계를 주입 받아 필드에 할당하는 방법이다
- 생성자 호출시점에 1번만 호출되며 불변, 필수 의존관계에 사용된다
- 만약 스프링 빈에 해당하는 클래스일 경우 생성자가 1개만 있다면 @Autowired을 생략해도 자동적으로 의존 관계가 주입된다
setter 주입
- setter 메서드를 사용하여 필드의 값을 변경하는 방식으로 의존 관계를 주입하는 방법이다
- 선택, 변경 가능성이 있는 의존 관계에 사용한다
setter 메서드는 자바빈 규칙에 따라 다음과 같이 작성한다.
- 메서드 이름은 set으로 시작한다
- set뒤에 첫 글자는 대문자로 시작한다 -> age를 설정하는 setter는 setAge라고 작성한다
- 파라미터가 1개이다
- 리턴 타입이 void이다
💡 생성자 주입 VS setter 주입
생성자 주입 방식은 빈 객체를 생성하는 시점에 모든 의존 객체가 주입되고, setter 주입 방식은 setter 메서드 이름을 통해 어떤 의존 객체가 주입되는지 알 수 있다. 두 가지 모두 각자의 장단점이 있다.
생성자 주입 방식은 주입 시에 생성자의 파라미터에 맞게 객체를 주입해야 한다. 만약 파라미터가 많은 경우에는 이 생성자의 코드를 확인해야 한다. setter 방식은 메서드 이름으로 어떤 의존 객체를 주입해야하는지 유추할 수 있다.
생성자 방식은 빈 객체를 생성하는 시점에 모든 의존 객체를 주입받기 때문에 객체를 사용할 때는 이미 주입이 끝나 완전한 상태이다. 하지만 setter 주입은 의존 객체를 주입하지 않아도 빈 객체가 생성되기 때문에 NullPointerException이 발생할 수 있다.
필드 주입
- 필드에 바로 주입하는 방법니다
- 간결하다
- 외부에서 변경이 불가능하여 테스트가 어렵다
일반 메서드 주입
- 일반 메서드를 통해서 주입 받는 것이다
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Kotlin
- postman tests
- python3
- 네이버 2022 공채
- 확장 함수
- java
- solidity
- github
- 주생성자
- graphql
- pm.test
- postman collection
- mysql
- 코틀린
- Squash and merge
- Kotlin In Action
- DGS Framework
- Python
- 2차 인터뷰
- Basic Type
- hashcode
- git
- go 특징
- 1차 인터뷰
- string
- pm.expect
- 코딩테스트
- downTo
- postman
- squash merge
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함