본문 바로가기

웹개발/Spring

DI (Dependency Injection) 의존 주입

반응형
의존이란?

한 클래스가 다른 클래스의 메소드를 실행할 때 이를 '의존'한다라고 표현

 

의존하는 방법
  1. 의존하는 객체를 클래스 내부에서 직접 생성하는 방법
  2. 의존 객체를 전달 받는 방식 (DI를 통한 의존 처리) - DI 패턴
  3. 의존 자동 주입 

Q. 2번이 1번 보다 좋은 방법이다 그 이유는? 

더보기

A. 의존 객체를 생성자를 통해 주입하는 방식이 의존 객체를 직접 생성하는 방식 보다 좋은 이유는 유연함에 있다.

1번 같은 경우 수정이 발생할 경우 객체가 필요한 곳 모두 동일하게 수정해야 하는 반면,

2번은 객체를 생성할 때 사용할 클래스를 한 곳만 변경하면 된다. 

 

3. 의존 자동 주입 

의존 대상을 설정 코드에서 직접 주입하지 않고 스프링이 자동으로 의존하는 빈 객체를 주입해주는 기능

(Spring boot가 나오면서 의존 자동 주입을 사용하는 추세이다.)

@Autowired 또는 @Resource annotation을 사용한다.

Annotation을 붙이면 스프링이 해당 타입의 빈 객체를 찾아서 필드에 할당하므로 

설정 클래스에서 의존을 주입하지 않아도 된다. 

 

조립기 (assembler)

객체를 생성하고 의존 주입을 이용해서 객체를 서로 연결해주는 역할을 수행한다.

 

스프링은 DI를 지원하는 조립기라 할 수 있다.

차이점 : Assembler는 특정 타입의 클래스만 생성한 반면 스프링은 범용 조립기이다. 

 

반응형