728x90
반응형
spring 생성자 주입을 사용하면 좋은점
- 테스트 코드 작성 편리.
- Autowired 를 써버리면, 구현체를 변경하고 싶을 때 까다로움.
- 그렇기에 생성자 주입을 통해 테스트 코드를 만들면 구현체를 넣어줄 수 있기에 편리
- 순환참조 방지
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 |
댓글