DI란 ?
-> Dependency Injection, 즉 의존성 주입이라는 뜻이다.
예를 들어 베터리 분리형 장난감은 베터리가 떨어지면 베터리만 교체하면 되는 형식으로 더 효율적이다.
객체 지향 프로그래밍에서 사용되는 중요한 디자인 패턴 중 하나로,
객체를 다 독립시켜 유연성 있게 필요한 것을 추가, 삭제 등을 하여 유지보수가 가능하게 하는 것이다.
DI는 객체가 필요로 하는 다른 객체를 직접 생성하는 것이 아니라, 외부에서 주입받는 방식으로 의존성을 관리한다.
즉, 어떤 객체가 다른 객체에 의존할 때, 이 의존성을 코드 내에서 하드 코딩하는 대신 외부에서 필요한 의존 객체를 제공받는다.
1. 생성자 주입
@Controller
public class Controller{
private Service service;
@Autowired
publice Controller(Service service){
this.service = service;
}
}
> 해당 class의 생성자의 매개변수로 객체를 받고, @Autowired 어노이테이션을 작성하는 방법
spring 3,4 이후로는 클래스 내에 생성자가 하나이고, 그 생성자로 주입받을 객체가 빈으로 등록되어 있다면
@Autowired 생략이 가능하다.
생성자 주입은 객체 지향 프로그래밍의 원칙을 따르고 코드의 안전성, 가독성, 유지보수성, 테스트 용이성을 향상시키는데 도움이 되며,
DI 프레임워크와의 통합도 원활하게 이루어집니다. 가능하면 생성자 주입을 사용하는 것이 좋다.
2. 필드 주입
@controller
public class Controller{
@Autowired
private Service service;
}
> 필드 부분에 @Autowired 어노이테이션을 작성해 의존성을 주입하는 방식
장점으로는 코드가 간결하고 편하지만, 단점으로는 의존관계를 정확하게 파악하기가 힘들다.
3. 수정자(setter)주입
@Controller
public class Controller{
private Service service;
@Autowired
publice setService(Service service){
this.service = service;
}
}
> set메서드에 @Autowired 어노이테이션을 작성해 의존성을 주입하는 방식
-
@Autowired : 의존성을 주입해달라는 요청을 뜻함
'Backend > Spring' 카테고리의 다른 글
[Spring] Socket을 이용해서 채팅 웹페이지 만들기 ! (1) (2) | 2023.09.10 |
---|---|
[Spring] 내가 보려고 만든 spring 용어 정리 ( 9월 25일 수정 ) (0) | 2023.09.04 |
[Spring] Spring Project - MVC 배우기 ! (0) | 2023.09.03 |
[Spring] eclipse / STS / Lombok.jar 설치하기 (0) | 2023.09.03 |
[Spring] 프로젝트 생성 (2) | 2023.08.31 |