[7일차] - Bean, IoC, Bean

Woozy9ucci·2022년 10월 28일
0

기존에 어떤 객체를 사용하려면 new 연산자를 통해 새로운 객체를 생성하고
호출하여 사용했다.
이 때 우리는 객체를 일일이 생성하고 그 주소들을 일일히 관리해 줘야 했다.
이는 객체간 강한 결합 등과 같은 상태에서 보수 등에 어려움을 주고
기능만 사용하는 등 단순 반복되어 사용할 수 있는 객체를 계속 생성하는 등
비효율적이고 불편할 수 있는 상황을 초래 했다.
스프링은 이러한 점들을 보완해 줄 수 있다.

빈 (Bean)
반복되어 사용되고 객체간 결합이 강한 객체에
@Component, @Configuration + @Bean 어노테이션을 달아주면
스프링이 스캔시에 해당 객체를 생성(인스턴스 화)하여 IoC컨테이너에 보관하고 관리한다. (Heap영역)
이렇게 스프링이 생성하고 관리하는 객체를 Bean 이라고 한다.

스프링 컨테이너 (IoC Container)
이 때 주의할 점은 해당 인스턴스를 싱글톤으로 관리 한다는 것이다.
(때문에 DTO와 같이 새로운 생성이 필요적인 객체라면 Bean등록을 지양해야 한다.)

의존성 주입 (DpendencyInjection, DI)
Bean으로 등록하게 되면 객체간 의존관계에 있는 경우 @Autowired 어노테이션을 통해 (자동 주입도 가능) 이 관계를 스프링이 결정 하고 주입할 수 있다.

제어의 역전 (Inversion of Control, IoC)
이러한 싱글톤 패턴으로 메모리 낭비를 방지하고 객체간 결합을 느슨하게 해준다.
이렇게 되면 우리는 해당 객체들을 관리하고 제어해야하는 부담을 덜 수 있게 된다.

0개의 댓글