내일배움캠프 D+58

유제협·2021년 11월 10일
0
post-thumbnail

IOC & DI & Bean

[관계 이해도]

IOC에서 사용할 객체A를 생성 하려 한다. 이때 DI를 통해 외부에서 객체A와 같은 타입의 객체A를 생성한 뒤 IOC contaner에 주입을 시켜준다. 이때 의존관계가 설정되고 주입된 객체A를 Bean Object라 한다.

1. IOC (제어권의 역전)

객체의 생성, 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미한다.

2. IOC Contanier

객체에 대한 생성 및 생명주기를 관리할 수 있는 기능

  • IoC 컨테이너는 객체의 생성을 책임지고, 의존성을 관리한다.
  • POJO의 생성, 초기화, 서비스, 소멸에 대한 권한을 가진다.
  • 개발자들이 직접 POJO를 생성할 수 있지만 컨테이너에게 맡긴다.
    *POJO : 특정 자바 모델이나 기능, 프레임워크 등을 따르지 않은 자바 오브젝트

3. DI

다른 객체를 사용할 때 해당 객체의 외부에서 생성한 의존성이 걸린 객체를 주입한다.

상세한 기능은 다음과 같다.

  • IOC가 객체를 생성하려 한다.
  • 의존성이 필요한 객체의 멤버변수를 조사한다.
  • 의존성이 필요한 객체의 멤버변수와 동일한 타입의 객체를 외부에 생성한다.
  • 외부에 생성한 객체를 주입한다.(의존관계를 주입해 주는 것이다.)

4.Bean

Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라는 용어로 부른다.

  • 우리가 new 연산자로 어떤 객체를 생성했을 때 그 객체는 빈이 아니다.
  • ApplicationContext.getBean()으로 얻어질 수 있는 객체는 빈이다.
  • Spring에서의 빈은 ApplicationContext가 알고있는 객체
    즉, ApplicationContext가 만들어서 그 안에 담고있는 객체를 의미한다.

[참고자료]
https://dog-developers.tistory.com/12
https://ko.wikipedia.org/wiki/Plain_Old_Java_Object
https://atoz-develop.tistory.com/entry/Spring-%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B9%88Bean%EC%9D%98-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%83%9D%EC%84%B1-%EC%9B%90%EB%A6%AC

1개의 댓글

comment-user-thumbnail
2021년 11월 11일

좋아용~!

답글 달기