반응형
IoC와 DI는 스프링의 기본 중 기본이다.
사실상 스프링을 사용하는 이유가 IoC와 DI라고 봐도 무방할 정도...? 적어도 나는 그렇다 ㅋㅋ 이렇게 편리하게 자바를 쓸 줄이야
IoC (Inversion Of Controll, 제어의 역전)
내가 만든 오브젝트들을 내가 관리하는 게 아니라 스프링에서 관리한다.
예를 들어 Stringbuilder sb = new StringBuilder() 라는 코드를 통해 Stringbuilder 객체를 만들었다고 하자,
이걸 @Bean 등의 어노테이션 등으로 스프링 Bean에 등록하면, 이제 이 객체는 스프링에서 관리하게 된다!
그래서 sb를 내가 사용해야 하는 상황이 닥칠 때마다, 나는 스프링에게 "sb 내놔!" 하고 요청할 수 있는 것...
그럼 스프링한테 어떻게 sb를 달라고 요청할 수 있을까?
이 때 사용하는 게 바로 DI!
DI (Dependency Injection, 의존성 주입)
스프링 Bean에서 관리하는 객체들을 주입하는 것.
나는 스프링 Bean에 등록된 sb를 사용하고 싶다...
그럴 땐 @Autowired 어노테이션을 사용해서 내가 선언한 Stringbuilder 객체에 이 sb를 주입받을 수 있다!
@Autowired
Stringbuilder sb;
뭐 대충 이런 식으로...
그런데 @Autowired를 활용한 DI는 클래스의 종류를 보고 주입하기 때문에, Stringbuilder 클래스 객체가 Bean에 등록되어있지 않다면 예외를 발생시킨다!
사실 이건 다 아는 건데... 왜 작성했냐면...
개념 자체는 아는데 IoC와 DI 두 단어가 헷갈려서... 나만 이런가...? ㅋㅋ
여튼 이 참에 확실히 잡고 가자.
'간단 정리 > Spring' 카테고리의 다른 글
[Spring] 내가 보려고 만든 URI와 URL, URN 간단 정리 (0) | 2024.02.17 |
---|---|
[Spring] 내가 보려고 만든 GET 요청과 POST 요청 정리 (0) | 2024.02.15 |
[Spring] 내가 보려고 만든 각종 어노테이션 간단 정리 (1) | 2024.01.09 |