[Spring] DI, IoC 란?

ggamang·2023년 4월 4일
0

JAVA&Spring

목록 보기
19/27

DI(Dependency Injection)

객체를 직접 생성하는 게 아니라 외부에서 객체를 생성한 후 주입시켜주는 방식

애플리케이션 실행 시점에 외부에서 실제 구현 객체를 생성하고 클라이언트에 전달해서 클라이언트와 서버의 실제 의존관계가 연결되는 것

스프링에서의 DI

스프링은 DI라는 방식을 이용하여 모듈간의 결합도를 낮추어준다

DI란 IOC Container가 개발자 대신 xml파일에 정의된 대로 Bean객체를 생성하고 의존성을 대신 주입하는 것을 의미한다

장점

모듈 간의 결합도가 낮아지고 유연성이 높아진다

의존관계 주입을 사용하면 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 있다

IoC(Inversion of Control)

프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)라고 한다 (="제어의 흐름이 바뀐다!")

스프링에서의 IoC

사용자가 직접 객체를 생성하고 관리하던 것을 spring의 IOC Container가 대신 해준다는 의미이다

스프링에서는 다음과 같은 순서로 객체가 만들어지고 실행된다.

1.객체 생성
2.의존성 객체 주입
3.의존성 객체 메소드 호출

모든 의존성 객체를 스프링이 실행될때 다 생성해주며 필요한곳에 주입시켜 준다

이 처럼 제어의 흐름을 사용자가 컨트롤 하는 것이 아니라 스프링에게 맡겨 작업을 처리하게 된다는 의미이다

0개의 댓글