본문 바로가기
Spring Boot

[Spring Boot] IoC와 DI

by 코딩diary 2024. 12. 7.

IoC (Inversion of Control)

제어의 역전. 다른 객체를 직접 생성하거나 제어하지 않고 외부에서 관리하는 객체를 가져와 사용하는 것이다.

public class A {
	b = new B();	// new 키워드로 클래스 A에서 클래스 B의 객체 생성
}

------------------------------------------------------------------------

public class A {
	private B b;	// 객체 생성X, 받아온 객체를 b에 할당
}

 

 

DI (Dependency Injection)

의존성 주입. IoC를 구현하기 위해 사용하는 방법이다.

@Autowired 애너테이션은 스프링 컨테이너에 있는 을 주입하는 역할을 한다. 빈은 스프링 컨테이너에서 관리하는 객체를 뜻한다. 

public class A {
    // A에서 B를 주입받음
    @Autowired
    B b;
}

위 코드가 잘 동작하는 이유는 스프링 컨테이너에서 객체를 주입했기 때문이다. 즉, 스프링 컨테이너가 객체 B를 만들어서 클래스 A에게 준 것이다.

 

 

기존의 자바는 클래스 A에서 B 객체를 사용하고 싶을때 직접 생성했지만, 스프링은 객체를 직접 생성하지 않고 스프링 컨테이너에서 객체를 주입받아 사용한다.

 

 

빈 (Bean)

스프링에서 제공해주고 관리해주는 객체