ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • IoC - DI - Bean 의 관계
    회고/WIL 2023. 7. 4. 08:47
    728x90

    IoC - DI - Bean 의 관계

     

     

    일반적으로 객체간의 관계를 설정할 때, 다음과 같이 설정을 한다.

    만약에 다른 객체와의 관계가 필요한 경우에는?

     

    기존에 있던 결합을 끊어내고 다른 객체와 관계를 맺도록 직접 해주어야 한다.

     

     

    즉, 우리는 객체간의 관계를 코드 상에서 직접적으로 이어준다면, 다른 객체가 필요할 때마다 이를 바꿔주어야한다는 것이다. 다음의 코드를 보면서 설명해보자.

    MessageBean 인터페이스의 구현체인 MessageKor과 MessageEng 가 있다.

    DIMain 클래스에서 내가 MessageBean msg = new MessageKor();  라고 입력하는 순간 이들간의 관계는 굳어진다.

    즉, 결합도가 매우 높아지게 된다는 것이다.

     

    만약 이렇게 이렇게 객체를 생성하고 관계를 맺을 때마다 new 키워드로 직접 만들어주고 관계를 맺어준다면?
    수백개의 구성요소의 코드 속에서 어떻게 유지보수를 할 수 있을까?

     

    스프링은 이를 해결하기 위해서 IoC라는 개념과 DI를 통해 객체간의 결합도를 낮추어 유연한 개발을 도왔다.

    IoC란 Inversion of Control의 약자로, 영어 그대로 제어의 역전을 말한다.

    여기서 제어의 역전은
    객체간의 관계를 주입하는 대상이 개발자에서 프레임워크에게로 위임됨으로써 이루어 진다.

     

    이러한 과정을 가능하게 해주는 것이 DI이다. 

    DI는 객체가 직접 의존하는 객체를 생성하거나 검색하는 것이 아니라,
    외부에서 의존하는 객체를 주입받아 사용한다
    이를 통해 객체 간의 결합도를 낮출 수 있으며, 유연하고 재사용 가능한 코드를 작성할 수 있게 된다

     

     

    이때, DI에 의해서 주입되는 객체, IoC 컨테이너로부터 관리되어지는 객체가 바로 Bean이다.

    스프링에서는 Bean을 컨테이너에 관리하는 방법을 2가지로 할 수 있다.

     

     

    스프링 Bean 생성 방법 - @Component

     

     

     

    스프링 Bean 생성 방법 - @Configuration @Bean (수동생성)

    \

     

    오늘은 기존의 정리한 개념인 IoC , DI 에 더해 이들에 의해서 관리되어지고 사용되어지는 Bean까지 알아보았다.

    '회고 > WIL' 카테고리의 다른 글

    7/4 ~ 7/12 이 전의 날들을 돌아보기  (0) 2023.07.12
    HTTP와 MVC  (0) 2023.06.25
    1주차 - 자바  (0) 2023.06.18
Designed by Tistory.