본문 바로가기
JAVA&스프링

[Spring] 스프링 컨테이너를 왜 사용할까? (DI , IoC)

by 개발고구마 2025. 6. 22.

BookMemory / BookDB

 

메모리에 저장할지 DB에 저장할지 역할만 바꾸고 싶은데(레포지토리는 다른데)

서비스의 소스까지 변경을 해야한다. 이걸 바꿀수 없을까?

 

인터페이스로 활용은 했지만 뭔가 부족하다

이걸 컨테이너가 주체 하는 것

직접 인스턴스를 만드는게 아니라 스프링 빈으로 활용해서 넣도록

 

그래서 직접 new를 쓰는게 아니라 컨테이너가 역할 하는 것이 제어의 역전. (IoC)

그래서 그 서비스에 객체를 넣어주는 과정을 의존성 주입(DI)라고 한다

 

그럼 어떤걸 넣어줄지는 어떻게 선택?

단순 인터페이스로 넣어버리면 어떤것을 불러올지 모름

 

이럴 때 쓰는 것이 Primary 어노테이션

 

당장 예시의 2개로는 효과가 안보이겠지만

참조가 100개 500개가 된다면 해당되는 모든 파일을 수정해야함