상세 컨텐츠

본문 제목

DI(의존성 주입)

Spring/개념

by Chan.94 2021. 10. 3. 11:23

본문

반응형

DI(Dependency Injection)


DI(의존성 주입, Dependency Injection)란, 클래스 간의 의존관계스프링 컨테이너가 자동으로 연결해주는 것을 말한다.

결합도(coupling)를 줄여주기 위해 사용한다.

 

A라는 클래스에 B라는 객체가 로컬 변수로 선언되어 B의 메소드가 사용되고 있을 때, B가 없으면 A 클래스의 인스턴스가 생성될 수 없기 때문에 A는 B에 의존한다라고 한다.


ex)

class Study {
    private Coffee coffee;

    public Study() {
    	this.coffee = new Coffee();
    }
    
    public startStudy() {
    	this.coffee.drink(); 
        ...
    }
}

Study 클래스에서 startStudy메소드를 호출하기 위해서는 Coffee 클래스가 필요하다.

이것을 Study클래스는 Coffee클래스에 의존한다라고 한다.

만약 Coffee클래스가 수정된다면 Study클래스도 수정되어야 한다는 문제가 발생한다.

즉, 결합도(coupling)가 높아진다.

 

class Cappuccino extends Coffee {...}
class Americano extends Coffee {...}
class Study {
    private Coffee coffee;

    public Study() {
    	this.coffee = new Americano();
    }
    
    public startStudy() {
    	this.coffee.drink(); 
        ...
    }
}

DI 이용

class Study {
    private Coffee coffee;

    public Study(Coffee coffee) {
    	this.coffee = coffee;
    }
    
    public startStudy() {
    	this.coffee.drink(); 
        ...
    }
}

필요한(의존하는) 클래스를 직접 생성하는 것이 아닌, 주입해줌으로써 객체 간의 결합도를 줄이고 좀 더 유연한 코드를 작성할 수 있다.

 


의존성 주입 방법

2. 생성자 주입

3. 필드 주입

4.Setter주입

 

다음 포스팅에서 @Autowired 사용법에 대해 정리해보겠다.

[Spring/개념] - DI(의존성 주입) @Autowired 사용법(1)

반응형

'Spring > 개념' 카테고리의 다른 글

Spring AOP (Proxy)  (0) 2021.10.08
@Autowired 인터페이스 사용이유  (0) 2021.10.07
@Autowired 사용법  (0) 2021.10.06
[Spring] component-scan 사용이유  (0) 2021.10.05
DispatcherServlet  (2) 2021.09.23

관련글 더보기

댓글 영역

>