Back-End/Spring Boot

예습) 스프링 입문을 위한 자바 객체 지향의 원리와 이해

newny 2023. 4. 23. 19:04
반응형

IoC/DI (Inversion of Control - 제어의 역전 / Dependency Injection - 의존성 주입)

  • 프로그래밍에서 의존관계는 new로 표현된다
  • 의존하는 객체(전체)와 의존되는 객체(부분) 사이에 집합관계와 구성관계로 구분할 수 있음
    • 집합 관계 예 : 집 - 냉장고 → 부분이 전체와 다른 생명 주기를 갖는다
    • 구성 관계 예 : 사람 - 심장 → 부분은 전체와 같은 생명 주기를 갖는다

 

의존 관계

  • Tire 객체를 직접 생성함
  • Tire타입 객체의 종류를 정확히 알아야지만 그에 해당하는 객체를 생성할 수 있음
public class Car() {
    Tire tire;
    public Car() {
        tire = new Tire();
    }
}

 

의존성 주입1 - 생성자를 통한 의존성 주입

  • Car객체를 생성할 때 생성자의 매개변수에 외부에서 생성된 Tire객체를 주입하는 방식으로, 직접 Tire 객체 생성을 할 때보다 유연성이 높아짐
  • Tire 인터페이스를 구현한 어떤 객체가 들어오기만 하면 정상적으로 작동하게됨
public class Car() {
    Tire tire;
    public Car(Tire tire) {
        this.tire = tire;
    }
}

 

의존성 주입2 - 속성을 통한 의존성 주입

tire 속성에 대한 접근자 및 설정자 메소드가 생김

public class Car {
    Tire tire;
    
    public Tire getTire() {
    	return tire;
    }
    
    public void setTire(Tire tire) {
        this.tire = tire;
    }
}

 

스프링을 통한 의존성 주입 - XML 파일 사용

운전자가 종합 쇼핑몰에서 타이어를 구매 → 운전자가 종합 쇼핑몰에서 자동자를 구매 → 운전자가 자동차에 타이어를 장착 (종합쇼핑몰 = 스프링 프레임워크)
 

스프링을 통한 의존성 주입 - XML 파일에서 속성 주입

운전자가 종합 쇼핑몰에서 자동차를 구매 요청 → 종합 쇼핑몰은 자동차, 타이어를 생산 → 종합 쇼핑몰은 자동차에 타이어를 장착 → 종합 쇼핑몰은 운전자에게 자동차를 전달

반응형