백엔드/Spring Boot

46 - Spring : 의존성 주입

두개의 문 2023. 7. 4. 21:41

- DI(Dependency Injection) 

  • Spring Framework의 3가지 핵심 프로그래밍 중 하나인 의존성 주입(DI)는 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴

  • 각 객체 간 의존관계를 스프링 컨테이너가 개발자가 정의한 Bean 등록 정보를 바탕으로 자동으로 주입해주는 기능 

 

 * Beans이란? 스프링 컨테이너에서 관리하는 객체를 의미 

 

 ① 강한 결합

 - 객체 내부에서 다른 객체를 생성하는 것은 강한 결합도를 가지는 구조

 - A 클래스 내부에서 B 라는 객체를 직접 생성하고 있다면, B 객체를 C 객체로 바꾸고 싶은 경우에 A 클래스도 수정해야 하는 방식이기 때문에 강한 결합

 

 ② 느슨한 결합 

 - 객체를 주입 받는다는 것은 외부에서 생성된 객체를 인터페이스를 통해서 넘겨받는 것

 - 결합도를 낮출 있고런타임시에 의존관계가 결정되기 때문에 유연한 구조를 가짐 

 

 

 - 만약, 객체 2와 객체3의 코드에 중대한 변화가 생겼다면, 객체1에도 영향을 미치게 됨 

 

  객체1이 객체2와 객체3을 이용함 

        객체1은 객체2와 객체3의 상태에 영향을 받음 = 의존함 

     • 의존한다 : 외부의 다른 객체와 상호작용을 한다는 의미 

객체의 기능 구현을 외부 객체의 메서드를 이용해서 최종 구현함 

        즉, 객체의 기능구현을 외부 객체의 메서드에 의존함 

        또는 객체의 기능구현을 외부 객체의 메서드를 통해 주입받음 

 

내가 직접 객체 생성하지 말고, 외부에서 객체 생성 후 그 객체의 메서드를 이용함 

코드의 변경이 생길 경우, 외부의 객체 코드만 변경하면