🤔 Question
👉 Spring에서 @Autowired란 무엇일까요? 아주 쉽게 말하면, 필요한 부품을 Spring이 알아서 꽂아주는 기능입니다. 우리가 컴퓨터를 조립할 때 CPU나 메모리를 직접 꽂지 않아도, 완성된 제품을 받는 것과 비슷합니다.
👉 개발자는 객체를 직접 만들지 않고, Spring에게 “이거 필요해요”라고 말만 하면 됩니다.
🧩 왜 @Autowired가 필요할까?
👉 Spring을 사용하지 않는다면, 우리는 보통 아래처럼 객체를 직접 만듭니다.
👉 하지만 이렇게 되면 객체 간의 연결이 너무 강해지고, 수정이 어려워집니다.
👉 @Autowired를 사용하면, 객체 생성과 연결을 Spring이 대신 관리해 줍니다. 그래서 코드가 훨씬 깔끔해지고 유연해집니다.
🔌 @Autowired의 동작 원리
👉 @Autowired는 Spring 컨테이너 안에 있는 객체(Bean)를 찾아서 자동으로 연결합니다.
1. Spring이 실행되면서 Bean들을 미리 만들어 둡니다
2. @Autowired가 붙은 곳을 발견합니다
3. 타입이 같은 Bean을 찾아 자동으로 주입합니다
👉 그래서 우리는 new 키워드를 거의 사용하지 않게 됩니다.
📌 @Autowired를 사용할 수 있는 위치
👉 @Autowired는 여러 곳에 사용할 수 있습니다.
- 필드 주입
- 생성자 주입
- setter 주입
👉 이 중에서 생성자 주입이 가장 권장되는 방식입니다. 객체가 만들어질 때 반드시 필요한 값이 들어오기 때문입니다.
⚠️ 실무에서 자주 겪는 문제
👉 같은 타입의 Bean이 여러 개 있으면 Spring은 어떤 것을 넣어야 할지 몰라서 에러를 발생시킵니다.
👉 이럴 때는 @Qualifier나 @Primary를 함께 사용해 해결합니다.
👉 또한 무분별한 필드 주입은 테스트와 유지보수를 어렵게 만들 수 있으니 주의가 필요합니다.
☔ 정리
👉 @Autowired는 Spring의 핵심 개념인 DI(의존성 주입)를 쉽게 구현할 수 있게 도와주는 어노테이션입니다. 객체를 직접 만들지 않고 Spring에게 맡김으로써, 코드가 깔끔해지고 변경에 강한 구조를 만들 수 있습니다.
If I was of any help to you, please buy me coffee 😿😢😥
If you have any questions, please leave them in the comments
[2] Ads :
https://apps.apple.com/us/app/beluga-classic-film-filters/id6744041061