Spring IoC 컨테이너와 Bean

정권호·2022년 1월 1일
0

Spring

목록 보기
1/2
post-thumbnail

IoC란?

Inversion of Control의 약자로 말 그대로 제어의 역전이다.

일반적인 의존성 제어권

"내가 사용할 의존성은 내가 만든다!"

class SmapleController {
	private final SampleService service = new SampleService();
}

일반적으로 사용자가 사용하는 객체는 사용자가 직접 생성하여 사용한다.


IoC: 역전된 의존성 제어권

"내가 사용할 의존성은 타입만 일치하면 돼 누군가 알아서 해줘."

class SmapleController {
	private final SampleService service;
    
    	public SampleController(SampleService service) {
        	this.service = service;
    	}
}

IoC는 다음과 같은 형태로 다른이에게 본인이 사용할 의존성을 본인이 관리하는게 아닌 다른 이에게 맡기는 형태이다.


그래서 왜 사용하는데?

이렇게 함으로써 사용자는 의존성을 관리를 맡김으로써 생성된 객체의 생명주기를 따로 신경 쓸 필요 없이 오직 비즈니스 로직에만 신경 쓸 수 있게된다!


Spring IoC 컨테이너란?

위에서 말했던 의존성을 관리해주는 역할을 해주는 존재이다.

IoC 컨테이너 특징

  • 최상위 인터페이스는 BeanFactory로 되어있다.
  • IoC 컨테이너안에 있는 빈들끼리만 의존성 주입을 해준다.
    (물론 외부에도 의존성 주입이 가능은 하지만 굉장히 복잡하고 권장되지 않는 방법)

Bean이란?

빈이란 IoC 컨테이너가 관리하는 의존성, 즉 객체들이다.

Bean 사용이유

  • Spring에서 의존성 관리

  • 상글톤 스코프
    • 하나의 객체로만 의존성을 괸라하여 메모리 효율에 좋다.
    • 미리 생성해놓은 객체를 이용하여 런타임 성능에 좋다.

  • 라이프사이클 인터페이스 지원
    • @PosrConstruct를 이용하여 빈이 생성되기전에 작업 가능!
profile
머라도 해봐요

0개의 댓글