[spring] - Ioc (제어의 역전)

이창희·2022년 7월 11일
0

spring

목록 보기
2/2
post-thumbnail

1. IoC(Inversion of Control) ?

우리가 스프링 프레임워크 없이 개발할 때에는 객체의 생성, 설정, 초기화, 메소드 호출, 소멸을 프로그래머가 직접관리해야 했다. 또한 외부 라이브러리를 사용하려고 할 때, 개발자가 직접 외부 라이브러리를 호출하는 형태로 이용했었습니다.

하지만, 스프링 프레임워크에서는 객체의 생명 주기와 관련된 것들을 모두 프레임워크에 위임할 수 있습니다.

이와 같이 개발자가 작성한 객체나 메서드의 제어를 개발자가 아니라 외부에 위임하는 설계 원칙을 제어의 역전이라고 합니다.

개발자가 객체를 관리하지 않으면 어떠한 장점이 있을까요?


1.1 IoC 장점

  1. 자바소스를 건들이지 않고 객체를 바꿀 수 있다. ( 유지보수 향상)

    객체설정을 xml에서 하기때문에 자바소스를 수정할 일이 없습니다.

  2. 어플리케이션의 제어 책임이 프로그래머에서 프레임워크로 위임되므로, 개발자는 핵심 비즈니스 로직에 더 집중할 수 있다.

  1. 객체 생성과 의존관계에 대한 코드가 사라져 결과적으로 낮은 결합도의 컴포넌트를 구현할 수 있게 한다.

결합도란?
하나의 클래스가 다른 클래스와 얼마나 많이 연결되어 있는지를 나타내는 표현이며, 결합도가 높은 프로그램은 유지보수가 어렵다.


2. DI(Data Injection)

DI를 사용하는 방법은 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록하고 런타임 시에 관계를 주입하면 됩니다. 관계를 주입하게 되면서 유연성을 확보하고 결합도를 낮출 수 있게 해주는 것입니다.


2.1 DI 간단 정리

  • 사용하는 목적 : 결합도를 낮추고 객체의 유연성을 높이기 위해
  • 장점
    • 각 객체 관계라는 관심사의 분리

    • 테스트 작성을 용이하게함

      • 분리가 되어 있기때문에 결합도가 느슨해짐으로써 발생하는 장점이다.
    • 결합도가 Down!!!


3. IoC와 DI

Ioc는 DI(DataInjection)과 밀접한 관련이 있습니다. DI는 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, IoC원칙을 실현하기 위한 여러 디자인패턴 중 하나입니다.IoC와 DI 모두 객체간의 결합을 느슨하게 만들어 유연하고 확장성이 뛰어난 코드를 작성하기 위한 패턴입니다.


3.1 IoC와 DI의 차이점

IoC는 일반적인 디자인 패턴 중 하나입니다.
DI는 이런 제어의 역전 패턴을 달성하게 해주는 방법 중 하나라고 볼 수 있습니다.


Reference

profile
백앤드 개발자를 꿈꾸는 개발자 지망생입니다.

0개의 댓글