🌿SPRING/🍀공부 [SPRING]

[SPRING] 의존성 주입 DI , IoC 컨테이너

디카페인라떼 2022. 8. 22. 17:57

<강한 결합>

  • 강한 결합의 문제점
    • Controller 5 개가 각각 Service1 을 생성하여 사용 중 (각각 객체를 생성하여 사용중)
    • Repository1 생성자 변경에 의해..
    •  모든 Contoller  모든 Service 의 코드 변경이 필요

  • 강한 결합 해결방법 = 느슨한 결합으로 만들어주기
    • 각 객체에 대한 객체 생성은 딱 1번만!!
    • 생성된 객체를 모든 곳에서 재사용!!!

 


<DI 의존성 주입의 이해>

=> 제어의 역전 (IoC : Inversion of Control) : 프로그램의 제어 흐름이 바뀜

  • 일반적: 사용자가 자신이 필요한 객체를 생성해서 사용
  • IoC (제어의 역전)
    • 용도에 맞게 필요한 객체를 그냥 가져다 사용
      • "DI (Dependency Injection)" 혹은 한국말로 "의존성 주입"이라고 부릅니다.
    • 사용할 객체가 어떻게 만들어졌는지는 알 필요 없음
    • 실생활 예제) 가위의 용도별 사용

<스프링 IoC 컨테이너 사용하기>

DI를 하기 위해서는 객체생성이 우선!

어디서? -> 스프링 프레임워크가 필요한 객체를 생성하여 관리하는 역할을 대신해줌

  • 빈 (Bean): 스프링이 관리하는 객체 (@Component)
  • 스프링 IoC 컨테이너: '빈'을 모아둔 통 (@Autowired->생략가능함)