[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