[Springboot/Information] 생성자 주입 시 @Autowired를 사용하는 이유?

푸른별·2025년 5월 25일
0

Web

목록 보기
18/18

1. 상황 설명

개인 프로젝트를 진행하며 mvc 패턴 템플릿을 작성하고 있었는데, 한 가지 의문이 드는 부분이 있었습니다.

보통 제 경우에는 위와 같이 생성자 주입으로 의존성을 형성해주는 것이 스프링 권장사항이기도 하여 @Autowired를 개발 시 잘 쓰지 않았던 것도 있었습니다.

그런데 문득 다른 분들의 github에서 이런 코드를 본 적이 있었습니다.

출처 - Spring Framework Dependencies(DI)

실제 실행에 있어서도 별 차이는 없었으나 분명 내부적으로 다른 흐름을 가질 것이라 생각했고, 결국 상황에 따라 다를 것이라는 확신과 함께 세부 내용을 파악하기 시작했습니다.

2. 분석


1. @Autowired(required=true)로 지정된 생성자는 한 클래스에 하나만 있을 수 있다.
2. multiple constructors에 대해서는 (required=false) 가장 많이 의존성을 주입 가능한 생성자를 선택하고, 조건에 부합하지 않을 경우 기본 생성자가 사용된다.


StackOverFlow에서는 다음과 같은 이점이 있다고 합니다.
1. 의존성이 명확하게 드러나서 테스트 시점이나 객체 생성 시 누락 위험을 방지할 수 있다.
2. 의존성에 final을 붙여 thread-safe한 영역을 만들 수 있다.
3. 리플렉션 같은 복잡한 방식 없이 생성자 호출만으로 의존성을 주입할 수 있다.

3. 결론

여러 생성자를 만들고 default constructor 외의 생성자를 지정하고자 할 때 @Autowired를 병행하여 사용하는 것임을 확인할 수 있었습니다.

실무적으로 여러 생성자를 만들 때(범용적인 상황을 대비하여) 사용될 것으로 판단되며, 이런 사소한 상황으로부터 문제가 번지기 마련이므로 잘 이해해둔 뒤 적재적소에 사용하는 것이 좋을 것으로 보입니다.

4. 참고 자료

@Authwired를 생성자 주입과 함께 쓰면 좋은 이유
Spring 공식 문서에서의 생성자 주입 설명

5. 추천 음악

요즘 빠진 노래~ LUCY 하마 1시간짜리로 틀어놓고 코딩할 때도 있네요

하마 - LUCY
https://www.youtube.com/watch?v=POxUDjkMTPY

profile
묵묵히 꾸준하게

0개의 댓글