DI, IoC 개념
2023. 11. 1. 01:19ㆍ백엔드/Spring Boot
DI (Dependency Injection)
`의존성 주입` 혹은 `의존 관계 주입`이라는 의미로 객체 간의 의존성을 외부에서 주입하는 방식을 의미하며 객체가 직접 필요한 의존 객체를 생성하거나 찾는 대신 외부에서 주입받아 사용하는 디자인 패턴으로 DI를 통해 모듈간의 결합도가 낮아지고 유연성이 높아진다.
* 의존 : 한 클래스가 다른 클래스의 메서드를 실행하는 것
IoC (Inversion of Control)
`제어의 역전`이라고 불리며 메소드나 객체의 호출작업 및 의존성 관리를 외부에서 결정하도록 하여 프로그램의 제어 흐름을 역전시키는 디자인 패턴으로 객체간의 결합도를 줄이고 유연한 코드를 작성 할 수 있어 유지 보수에 용이
의존성 주입방법 3가지
- Setter 주입
// setter 메소드에 @Autowired 을 붙여 의존성 주입
@Component
public class MyComponent {
private MyDependency myDependency;
@Autowired
public void setMyDependency(MyDependency myDependency) {
this.myDependency = myDependency;
}
public void performAction() {
System.out.println("MyComponent: Performing action.");
myDependency.doSomething();
}
}
- 생성자 주입
// 의존성을 설정하는 setter 메서드를 통해 주입
@Component
public class MyComponent {
private final MyDependency myDependency;
@Autowired
public MyComponent(MyDependency myDependency) {
this.myDependency = myDependency;
}
public void performAction() {
System.out.println("MyComponent: Performing action.");
myDependency.doSomething();
}
}
- 필드 주입
// 필드에 @Autowired를 붙여 직접 의존성 주입
@Component
public class MyComponent {
@Autowired
private MyDependency myDependency;
public void performAction() {
System.out.println("MyComponent: Performing action.");
myDependency.doSomething();
}
}
'백엔드 > Spring Boot' 카테고리의 다른 글
Controller,Service,Repository에서의 DI (0) | 2023.11.05 |
---|---|
스프링 빈(Bean) 이란? (0) | 2023.11.05 |
스프링 부트 프로젝트 생성 후 Controller 생성하기 (1) | 2023.11.03 |
Spring 계층 구조와 역할 (0) | 2023.11.01 |
Spring boot 프로젝트 생성하기 (1) | 2023.09.08 |