IOC/DI

김용빈·2022년 7월 25일
0
post-thumbnail

Spring Framework의 3대 핵심 개념 중 하나인 IoC/DI란?

  • IOC: 애플리케이션 흐름의 주도권이 뒤바뀐 것을 바로 IoC(Inversion of Control)

Java 콘솔 애플리케이션의 경우 main() 메서드가 종료되면 애플리케이션의 실행이 종료되지만 웹에서 동작하는 애플리케이션의 경우 클라이언트가 외부에서 접속해서 사용하는 서비스이기 때문에 main() 메서드가 종료되지 않아야 한다.

웹애플리케이션은 클라이언트의 요청이 들어올 때마다 스프링컨테이너 내의 컨테이너 로직(service() 메서드)이 직접 실행시켜 주기 때문에 main() 메서드가 필요없다. 즉 컨테이너를 제어하고 있기에 애플리케이션의 주도권은 스프링컨테이너에 있다. 이것이 바로 IoC(제어의 역전 개념이 적용)

스프링은 어떻게 IOC개념이 적용된것일까? 답은 바로 DI(의존성주입)

A 클래스가 B 클래스의 기능을 사용 할 때, ‘A클래스는 B클래스에 의존한다라고 생각하면 의존성주입을 이해하기 쉽다.

DI: 생성자를 통해서 어떤 클래스의 객체를 전달 받는 것을 ‘의존성 주입’ 이라 한다. 생성자의 파라미터로 객체를 전달하는 것을 외부에서 객체를 주입한다라고 표현

클래스의 생성자로 객체를 전달 받는 코드가 있다면 ‘아, 객체를 외부에서 주입 받고 있구나. 의존성 주입이 이루어 지고 있구나’고 기억하면 쉽다!

//예시

public class bookController{
private BookMenu bookMenu;

public bookContorller(BookMenu bookMenu){
		this.bookMenu = bookMenu;
	}
}

profile
안녕하세요!

0개의 댓글