[Spring] 제어의 역전과 의존성 주입

IoC와 DI란?

IoC

IoC란? Inversion of Control : 제어의 역전

  • 클래스 B 객체를 사용하기 위해 클래스 A에서 객체를 직접 생성
    public class A {
      b = new B();
    }
    
  • 제어의 역전을 사용한 경우 : 클래스 B 객체를 직접 생성하는 것이 아님
    public class A {
      private B b;
    }
    

DI

DI란? Dependency Injection : 의존성 주입

  • 어떤 클래스가 다른 클래스에 의존한다는 의미

IoC/DI를 기초로

  • @Autowired : 스프링 컨테이너에 있는 빈을 주입하는 역할
  • bean : 스프링 컨테이너에서 관리하는 객체
public class A {
    // A에서 B를 주입받음
    @Autowired
    B b;
}
  • 스프링 컨테이너가 B 객체를 만들어서 클래스 A에 준 것

빈과 스프링 컨테이너

스프링 컨테이너

  • 빈을 생성하고 관리함
  • 빈이 생성되고 소멸되기까지의 생명주기를 스프링 컨테이너가 관리
  • 개발자가 @Autowired같은 애너테이션을 사용해 빈을 주입받을 수 있게 DI를 지원

  • 스프링 컨테이너가 생성하고 관리하는 객체
  • 앞 코드에서의 B

빈을 등록하는 방법

  • @Component 애너테이션 추가
  • XML 파일 설정

Categories:

Updated:

Leave a comment