[Spring] DI(Dependency Injection) 스프링 의존성 주입
2022. 5. 16. 23:04ㆍ개발공부/Spring
728x90
의존성 주입에는 대표적으로 두 가지 방식이 있습니다. 필드 주입
과 생성자 주입
입니다.
Spring 4.3부터 생성자가 하나 뿐인 클래스는 생성자 주입을 사용할 때 @Autowired
를 생략해줄 수 있습니다.
생성자 주입의 장점은 필드에 @Autowired
를 쓸 경우 테스트 클래스에서 의존하고 있는 객체를 주입해주지 않아
NPE가 발생하는 케이스를 방지할 수 있습니다. 그리고 필드 주입은 주입된 인스턴스를 불변으로 만들지 못하지만, 생성자 주입은 가능합니다.
이는 필드 주입은 객체를 생성하고 의존성을 Reflection으로 주입 받기 때문입니다.
@Service
public class DatabaseAccountService implements AccountService {
private final RiskAssessor riskAssessor;
public DatabaseAccountService(RiskAssessor riskAssessor) {
this.riskAssessor = riskAssessor;
}
// ...
}
참고자료
'개발공부 > Spring' 카테고리의 다른 글
[Spring] Collection 타입을 생성자 방식으로 주입하기 (0) | 2022.01.05 |
---|---|
[JWT] JWT(Json Web Token) (0) | 2021.10.30 |
[@RequsetBody] @RequestBody와 생성자 (0) | 2021.09.11 |
(2) Serialization (0) | 2021.06.02 |
(1) Exception Handling (0) | 2021.03.22 |