Q. DI 방식으로는 어떠한 방식이 있으며, 어떤 방식을 선호하시나요?
A. DI 방식은 크게 3가지로, [ Field 주입, Setter 주입, 생성자 주입 방식 ]이 있으며, 주로 [ 생성자 주입 방식 ]을 사용합니다.
이유로는 컴파일 시점에 '순환 참조'가 있을 때, 이를 인지하고 사전에 해소를 할 수 있기 때문입니다. 저는 이러한 질문에, 과거에는 이와 같은 내용을 외워서 대답을 하고 있었습니다 하지만, 스프링 2.6.x 버전부터는 생성자 주입 방식 외로도, 순환 참조가 아예 금지되었다고 합니다.
생성자 주입과 동일하게 필드 주입, Setter 주입의 경우에도, 컴파일 시점에 순환 참조 관련하여 아래와 같은 오류가 발생하는 것을 확인할 수 있습니다. 아래는 Setter 주입으로 인한 순환 참조시 발생하는 문제 입니다 Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException : Error creat...