반응형
의존성 주입(DI)
의존성이란?
- MyController는 MyServiceImpl에 의존 ****하고 있다. 즉, 동작하기 위해 다른 객체가 필요한 상황 == "의존성"
public class MyController {
private MyService service = new MyServiceImpl();
}
의존성 주입이란?
- 제어 역전의 방법 중 하나로 사용할 객체를 직접 생성 하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식 의미
스프링에서 의존성을 주입받는 방법 세 가지
- 생성자를 통한 의존성 주입
- 필드 객체 선언을 통한 의존성 주입
- 세터(setter) 메서드를 통한 의존성 주입
스프링에서는 @Autowired라는 애너테이션(annotation)을 통해 의존성을 주입할 수 있다.
1. 생성자를 통한 의존성 주입
@RestController
public class DIController {
MyService myService;
@Autowired
public DIController(MyService myService) {
this.myService = myService;
}
@GetMapping("/di/hello")
public String getHello() {
return myService.getHello();
}
}
2. 필드 객체 선언을 통한 의존성 주입
@RestController
public class FieldInjectionController {
@Autowired
private MyService myService;
}
3. 세터 메서드를 통한 의존성 주입
@RestController
public class SetterInjectionController {
MyService myService;
@Autowired
public void setMyService(MyService myService) {
this.myService = myService;
}
}
스프링 공식 문서에서 권장하는 방식
- 생성자를 통해 의존성을 주입받는 방식
- 다른 방식과는 다르게 생성자를 통해 의존성을 주입받는 방식은 레퍼런스 객체 없이는 객체를 초기화할 수 없게 설계할 수 있기 때문
반응형
'Spring Boot > 제어 역전(loC), 의존성 주입(DI)' 카테고리의 다른 글
[Spring boot] 제어 역전(loC) (0) | 2025.07.21 |
---|