Ioc와 DI

2023. 2. 28. 17:08카테고리 없음

 

  • IoC란 Inversion of Control의 줄임말이며, 제어의 역전이라고 한다.
  • 스프링 애플리케이션에서는 오브젝트(빈)의 생성과 의존 관계 설정, 사용, 제거 등의 작업을 애플리케이션 코드 대신 스프링 컨테이너가 담당한다.
  • 이를 스프링 컨테이너가 코드 대신 오브젝트에 대한 제어권을 갖고 있다고 해서 IoC라고 부른다.
  • 따라서, 스프링 컨테이너를 IoC 컨테이너라고도 부른다.

 

IoC 컨테이너의 가장 기초적인 역할을 오브젝트를 생성하고 이를 관리하는 것이다. 스프링 컨테이너가 관리하는 이런 오브젝트는 빈이라 부른다. 설정 메타 정보는 바로 이 빈을 어떻게 만들고 어떻게 동작하게 할 것인가에 관한 정보이다.

스프링 컨테이너는 자바 코드, XML, Groovy 등 다양한 형식의 설정 정보를 받아들일 수 있도록 유연하게 설계되어 있다.

 

 

IoC 컨테이너란?

  • 스프링에서는 IoC를 담당하는 컨테이너를 빈 팩토리, DI 컨테이너, 애플리케이션 컨텍스트라고 부른다.
  • 오브젝트의 생성과 오브젝트 사이의 런타임 관계를 설정하는 DI 관점으로 보면, 컨테이너를 빈 팩토리 또는 DI 컨테이너라고 부른다.
  • 그러나 스프링 컨테이너는 단순한 DI 작업보다 더 많은 일을 하는데, DI를 위한 빈 팩토리에 여러 가지 기능을 추가한 것을 애플리케이션 컨텍스트라고 한다.
  • 정리하자면, 애플리케이션 컨텍스트는 그 자체로 IoC와 DI 그 이상의 기능을 가졌다고 보면 된다.

궁금증!

ioc는 왜 필요한가 ? 

->생명주기를 관리

 

생명주기를 프레임 워크가 관리해야 하는 이유? 

-> 프레임 워크가 기능을 제공하기 위해서 이다 .

 

프레임 워크가 사용자에게 제공해주는 기능은 ?

->AOP 기능,로깅, 인증,인가등 

 

제공해줄려면 어떻게 해야 하는 가? 

->프록시가 되어야 한다 , 그럴려면 원본 인스턴스를 프레임 워크가 가지고 있어야 한다. 

 

프레임 워크가 가질 수 있는 방법? 

-> 스프링이 스프링 빈을 등록해야 한다 ,, 스프링은 빈을 관리 한다

DI - 의존 관계 주입

“A가 B를 의존한다”는 굉장히 추상적인 표현이지만, 토비의 스프링에서는 “의존 대상 B가 변하면, 그것이 A에 영향을 미친다”고 한다. 즉, B의 기능이 추가되거나 변경되면 그 영향이 A에 미치는 것이다.

 

DI:스프링은 의존성이 있다, 스프링은 빈들의 목록을 만들고 어떤게 필요한지 ,필드를 통해 세팅을 해준다, 주입 방식은 다양한데, 생성자 주입, 필드주입, 수정자 주입등이 있다.

 

 

https://steady-coding.tistory.com/600