IoC - 제어의 역전

    • Inversion of Control의 약자
    • 제어의 역전은 기존의 개발 방식에서 개발자가 직접 제어 흐름을 제어하는 것이 아니라, 외부의 프레임워크나 라이브러리가 제어 흐름을 대신하게 되는 것
      • 프로그램의 제어 흐름이 뒤바뀜
    • 클래스 간의 결합을 느슨하게 해 테스트와 유지 관리를 더 쉽게 하는 설계(design) 원칙

DI - 의존성 주입

  • Dependency Injection의 약자
    • A 객체가 B 객체의 메서드를 필요로 할 때 A클래스 안에 B클래스의 생성자를 사용해 B의 인스턴스를 만들어 사용하는 대신, 의존성 주입은 다음 세 가지 방법 중 하나를 써서 B클래스가 A클래스에 주입되도록 함.
      • 생성자 주입
      • Setter 주입
      • 인터페이스 주입

강한 결합의 문제점

강한 결합의 문제점

  • Controller 5 개가 각각 Service1 을 생성하여 사용 중일 때
  • Repository1 생성자 변경에 의의 모든 Contoller모든 Service 의 코드 변경이 필요함
  • 강한 결합 해결법
    • 각 객체에 대한 객체 생성은 딱 1번만!
    • 생성된 객체를 모든 곳에서 재사용! 
    • 생성자 주입을 사용하여 필요로하는 객체에 해당 객체 주입!
      느슨한 결합

 

'🗂️ Study > 🌿Spring' 카테고리의 다른 글

JPA  (0) 2024.05.21
IoC Container & Bean  (0) 2024.05.21
3 Layer Architecture  (0) 2024.05.21
JDBC  (0) 2024.05.21
Memo (CRUD 구현하기)  (0) 2024.05.21