본문 바로가기

기술면접

DI 구현 방법 비교해보기

이번에는 DI(Dependency Injection) 구현 방법 중 생성자 주입과 필드 주입 방식에 대해 알아보겠습니다.

 

1. 생성자 주입(Constructor Injection)

생성자 주입 방식은 생성자를 이용해서 의존성을 주입하는 방식입니다.

생성자 호출 시점에 호출되는 것이 보장되기 때문에 의존성이 반드시 필요한 경우에 사용합니다.

의존성 주입시 가장 권장되는 방식입니다.

@Service
public class PostServiceImpl implements PostService{

  private final PostRepository postRepository;

  @Autowired
  public PostServiceImpl(PostRepository postRepository) {
    this.postRepository = postRepository;
  }
}

 

위와 같이 생성자가 하나만 존재할 경우에는 @Autowired를 생략해도 됩니다.

 

또한 Lombok을 이용하면 더 간단하게 작성할 수 있습니다.

@Service
@RequiredArgsConstructor  // Lombok
public class PostServiceImpl implements PostService{

  private final PostRepository postRepository;
}

 

2. 필드 주입(Field Injection)

필드 주입 방식은 필드에 직접 의존성을 주입하는 방식입니다.

@Service
public class PostServiceImpl implements PostService{

  @Autowired
  private PostRepository postRepository;
}

 

이렇게 필드에 @Autowired를 사용해서 의존성을 주입할 수 있습니다.

그렇지만 필드 주입 방식의 경우 프레임워크에 의존하기 때문에 지양하는 것이 좋습니다.

IntelliJ IDEA에서도 경고 문고로 필드 주입 방식을 권장하지 않는 모습을 볼 수 있습니다.

 

참고

https://jeongkyun-it.tistory.com/172

 

[Spring] 의존성 주입(Dependency Injection)이란? (개념/ 예제/ 총 정리)

서론 이번글에서는 스프링을 이용한 의존성 주입에 대해서 알아보려한다. 의존성 주입(DI)은 크게 4가지 방법이 있다. 1. 생성자 주입 2. 수정자 주입(setter 주입) 3. 필드 주입 4. 일반 메서드 주입

jeongkyun-it.tistory.com

https://mangkyu.tistory.com/125

 

[Spring] 다양한 의존성 주입 방법과 생성자 주입을 사용해야 하는 이유 - (2/2)

Spring 프레임워크의 핵심 기술 중 하나가 바로 DI(Dependency Injection, 의존성 주입)이다. Spring 프레임워크와 같은 DI 프레임워크를 이용하면 다양한 의존성 주입을 이용하는 방법이 있는데, 각각의 방

mangkyu.tistory.com

 

'기술면접' 카테고리의 다른 글

프로세스와 스레드의 개념 및 차이점  (0) 2023.03.31
Filter, Interceptor, AOP 정의  (0) 2023.03.30
Parameter와 Argument  (0) 2023.03.30
컬렉션 프레임워크란  (0) 2023.03.30
제네릭이란?  (0) 2023.03.29