본문 바로가기
Spring

생성자 주입을 사용하면 좋은 이유?

by 무대포 개발자 2020. 10. 9.
728x90
반응형

spring 생성자 주입을 사용하면 좋은점

  1. 테스트 코드 작성 편리.
  • Autowired 를 써버리면, 구현체를 변경하고 싶을 때 까다로움.
  • 그렇기에 생성자 주입을 통해 테스트 코드를 만들면 구현체를 넣어줄 수 있기에 편리
  1. 순환참조 방지
  • A --> B, B --> 에서 서로 Autowired 하고 있다면 순환참조가 발생.

    • 이는 초기 빈 객체 생성 시에 발견할 수가 없음.
    • 비즈니스 로직이 구동될 때, StackOverFlowException 이 나겠지.
  • 아래와 같을 때, 비즈니스 로직 구동할 때, StackOverFlowException 발생. 서로 계속 호출하니 Stack 용량을 초과하는거지.

  • 생성자 주입의 경우 초기 빈 객체 생성 시 빈 순환 참조를 탐지할 수 있기에 이를 권장


public interface ATest {
)

public interface BTest {
)

@Service
public class ATestImpl implements ATest {}

    @Autworied
    private BTest bTest;
}

@Service
public class BTestImpl implements BTest {}
    @Autowired
    private ATest aTest;
}

reference

'Spring' 카테고리의 다른 글

Spring filter 와 interceptor 설명  (0) 2020.12.23
web application spring starter 세팅  (0) 2020.12.18
AOP 설명  (0) 2020.11.02
aop 와 weaving 설명  (0) 2020.10.19
POJO, Bean, 프레임워크 개념 정리  (0) 2020.10.08

댓글