본문 바로가기
책벌레와 벌레 그 사이 어딘가/개념쌓기

[개념쌓기] DI?IOC?

by veganwithbacon 2022. 8. 7.
반응형

알수록 왜 알게 많아지는 것일까

 

커다란 프로젝트를 진행할 때 클래스에 대한 변경이 필요하면 다른 클래스에 영향을 끼치지 않으면서 변경이 가능해야한다.이런 상황에 더 수월하게 변경이 가능하게 도와줄수 있도록 도입된 기능이 DI(Dependency Injection)IoC(Inversion of Control)이다

 

기존에는 자바 프로그래밍시 객체를 생성할 때, 직접 클래스에 new연산자를 이용해 생성했으나 DI는 컨테이너가 이를 수행해준다. 그렇게 되면 직접적인 연관 관계가 발생하지 않는데,이처럼 클래스들의 변경이 자유로워지는 것을 느슨한 결합이라고 한다.

 

각 클래스 간 결합도가 높게되면 나중에 프로젝트가 복잡해질시 유지보수가 힘들게 된다. 

 

그렇게 등장한 개념이 바로 IoC(Inversion of Control)이다

IoC에선 프로그램 제어 흐름이 반대로 진행된다.각 클래스들간 연관 관계를 클래스 자체 내에서 맺어주는 것이 아니라 스프링 자체 설정을 통해서 연관 관계를 맺어줌으로써 결합도를 낮춰준다.

 

클래스의 변경 사항이 다른 클래스에 연쇄 작용을 일으키면 자바코드에서 직접 객체를 사용하는 것이 좋은 방법은 아니다.

 


  DI 사용시 장점

  • 클래스 간 의존관계 최소화
  • 프로젝트 유지보수에 용이
  • 객체의 생성과 소멸 등 클래스간 의존관계를 스프링 컨테이너가 제어

DI는 XML이나 어노테이션을 통해 스프링 프레임워크가 제어한다.
기존에는 개발자가 직접 객체를 생성해줬던 반면 스프링 프레임워크에서는 객체의 제어를 스프링이 직접 담당해주는 IoC특징을 가진다.

 

스프링에서는 의존 객체를 컨테이너 실행시 객체를 주입하기 때문에 DI라고 부른다.이 때 각 클래스 객체를 Bean이라고 부르는데,의존관계를 설정하는 xml파일에서 각 객체를 bean태그로 표시하기 때문이다

 

  즉, 스프링의 DI란? 
  필요한 객체를 외부에서 생성해 주입하는 것

 

   그래서 DI,IOC에 대한 요약이 뭔데요?

  • DI는 클래스들간 의존관계를 낮추기 위해 사용된다
  • 스프링에서는 의존 관계를 스프링 자체에서 관리 해주는 데 이러한 특징을 IoC라고 부른다
  • 소스 코드 자체에 객체를 생성하지않고 Bean을 이용하여 의존 객체를 넣어줌으로써 클래스들간 의존관계를 낮춘다.
반응형

'책벌레와 벌레 그 사이 어딘가 > 개념쌓기' 카테고리의 다른 글

[개념쌓기] 쿠키? 세션?  (0) 2022.08.09
[개념쌓기] @DTO @VO  (0) 2022.08.09
[개념쌓기]ORM?  (0) 2022.08.07
[개념쌓기] REST API? RESTFUL API?  (0) 2022.08.03
[개념쌓기] URL?URI?  (0) 2022.08.02

댓글