본문 바로가기

Java

DI & IoC

728x90

DI (Dependency Injection)

- 의존성 주입

public class Main {
     public void main(String[] args) {
          Person jobth = new Person(“잡th”);
          jobth.buy();
     }
}

class Person {
     …
     void buy() {
          SamsongPhone samsong = new SamsongPhone(“삼송”);
          System.out.println(name + "님이 " + samsong.getName() + “폰을 샀습니다.”);
     }
     …
}

- Person 클래스는 내부적으로 SamsongPhone 클래스를 생성

- 매번 생성하는 것 보다, 생성 되어야 하는 SamsongPhone에 @Component를 생성 시키는 Person에 @Autowired를 통해

생성 가능

- 즉. SamsongPhone (Bean 객체)을 스프링 컨테이너에 등록하고 스프링 컨테이너가 이를 주입하는 것이다.

IoC (Inversion of Control)

- 제어의 역전

- 위 사례로 다시 설명할 수 있는데, 원래는 new 키워드로 생성하고 인스턴스 초기화하고 이런 로직을 개발자가 다 구현함

- 하지만 Spring에서는 어노테이션이나 설정 파일 (xml)로 Bean 객체 생성주기를 모두 컨트롤함

- 객체의 대한 제어권이 컨테이너에 역전되었다고 볼 수 있음

300x250

'Java' 카테고리의 다른 글

오버라이딩  (0) 2023.07.27
인터페이스  (0) 2023.07.27
메소드 레퍼런스  (0) 2023.07.09
람다 표현식  (0) 2023.07.09
Java의 함수형 인터페이스  (0) 2023.07.09