728x90
📌 알림
해당 글은 공부 목적으로 작성한 글입니다.
📌 주입 방식
1. 수정자 주입(Setter injection)
Setter 메서드를 통해 객체의 의존성을 주입하는 방식
대부분의 의존 관계 주입은 한 번 일어나면 종료시점까지 변경할 일이 거의 없어, 변경될 위험이 존재하는 수정자 주입은 잘 사용되지 않는다.
2. 필드 주입(Field injection)
필드에 Autowired 애너테이션을 붙여 의존성을 주입하는 방식
코드가 간결해서 예전에 많이 사용된 방식이지만, 외부에서의 변경이 불가능하여 테스트하기 힘들다는 단점이 있고, 별도의 DI 프레임워크가 필요하다는 단점이 있다.
3. 일반 메서드 주입(Method injection)
메서드에 Autowired 애너테이션을 붙여 의존성을 주입하는 방식
수정자 주입과 같이 변경될 위험이 존재해 잘 사용되지 않는다.
4. 생성자 주입(Constructor injection)
생성자에 Autowired 애너테이션을 붙여 의존성을 주입하는 방식
생성자에 Autowired 애너테이션을 붙이면 스프링 컨테이너에 Component 애너테이션으로 등록된 빈에서 생성자에 필요한 빈들을 자동으로 주입한다. 생성자 호출 시점에 딱 1번만 호출되는 것이 보장되며, 불변 변수를 사용해 필드의 수정을 막을 수 있어 현재 많이 사용되고 있는 방식이다.
📌 예비 답안
의존성 주입의 방식은 어떤 방식들이 존재하나요?
의존성 주입의 방법으로 수정자, 필드, 일반 메서드, 생성자 주입이 있습니다.
수정자 주입(Setter injection)은 Setter 메서드를 통해 객체의 의존성을 주입하는 방식으로, 의존 관계 주입은 한 번 일어나면 종료시점까지 변경할 일이 없어, 변경될 위험이 존재하는 수정자 주입은 현재 잘 사용되지 않습니다.
필드 주입(Field injection)은 스프링의 Autowired 애너테이션을 필드에 선언하는 방식으로, 코드가 간결해지지만 외부에서의 변경이 불가능해 테스트하기 힘들다는 단점이 있습니다.
일반 메서드 주입(Method injection)은 메서드에 Autowired를 붙여 의존성을 주입하는 방식으로 수정자 주입과 같이 변경될 위험이 존재해 잘 사용되지 않습니다.
마지막으로 생성자에 Autowired 애너테이션을 붙이는 생성자 주입(Constructor injection)이 있는데, 생성자에 Autowired 애너테이션을 붙이면 스프링 컨테이너에 Component 애너테이션으로 등록된 빈에서 생성자에 필요한 빈들을 자동으로 주입합니다. 생성자 호출 시점에 딱 1번만 호출되는 것이 보장되며, 불변 변수를 사용해 필드의 수정을 막을 수 있어 현재 많이 사용되고 있는 방식입니다.
댓글