DI
-
의존성 주입 DI스프링 2024. 1. 15. 22:16
DI - 의존성 주입 DI는 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 의존관계가 고정되지 않도록 런타임 시전에 동적으로 관계를 주입하여 결합도를 낮출 수 있다. 의존성 주입이라는 말을 예시를 통해서 정확히 무엇인지 알아보겠다. A가 B를 의존한다 → 의존대상 B가 변하면 그것이 A에게 영향을 미친다. (요리사)가 (레시피)에 의존한다 “피자가게의 요리사는 피자의 레시피에 의존”한다. 피자 레시피가 변하면 요리사는 피자를 만드는 방법을 수정해야 한다. 왜냐하면 레시피의 변화가 요리사의 행위에 영향을 끼치기에 “요리사는 레시피에 의존한다” 라고 할 수 있다. 왜 필요한가? DI를 적용하지 않는다면, 객체들 간의 관계가 아니라 클래스 간의 관계가 맺어질 뿐만 아니라 ..
-
[스프링] IoC, DI스프링 2023. 10. 4. 23:25
스프링 IoC 컨테이너 ‘제어의 역전’의 약어이며, 일종의 디자인 패턴중 하나 이다. 컨테이너는 보통 객체[ POJO ]의 생명주기를 관리, 생성된 인스턴스들에게 추가적인 기능을 제공하도록 하는 것이다. 이 말은 객체[ POJO ]의 생성 및 생명주기 등 객체[ POJO ]의 모든 제어권이 바뀌었단 말이다. 결론, 객체[ POJO ]의 제어권이 “ 나(개발자) → 컨테이너 “ 이동한단 말이다. POJO란, 주로 특정 자바 모델이나 기능, 프레임워크를 따르지 않는 Java Object를 지칭한다. -> Java Bean 객체가 대표적이다. 빈 등록방법 @Component @Bean IoC 사용이유 DI → 객체를 new해서 생성 하지 않고, IoC 컨테이너에 존재하는 Bean 주입하면, 싱글톤 문제 및 편..