[Spring] DI, IoC

thingzoo·2023년 8월 27일
post-thumbnail

질문 예시

DI, IoC에 대해 설명해주세요.

IoC(Inversion of Control)는 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라, 외부(프레임워크)에서 결정되는 디자인 패턴을 의미합니다. 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 합니다.

DI(Dependency Injection)는 IoC의 일종으로, 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식입니다. 의존성 주입 방법에는 생성자 주입, 필드 주입, setter 주입 이렇게 3가지가 있습니다. Spring에서 가장 권장하는 의존성 주입 방법은 생성자를 통한 주입 방법입니다. 그 이유는 순환 참조를 방지하고, 불변성을 가지며 테스트에 용이하기 때문입니다.

스프링에서는 스프링 컨테이너(IoC 컨테이너)가 객체의 생명주기를 관리하며, 이때 생성된 객체를 Bean이라고 합니다. 이 Bean들은 의존성 주입을 통해 생성되어 싱글톤 패턴으로 관리됩니다. 이를 통해 개발자들은 비즈니스 로직에 집중할 수 있습니다.

profile
공부한 내용은 바로바로 기록하자!

0개의 댓글