새소식

🍹 (주) 강의 주제/✏️ Spring은 어노테이션에 있다

[Spring] Autowired란 무엇인가요?

728x90

🤔 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

🧭 References

[1] reference : https://doctorson0309.tistory.com/

[2] Ads : https://apps.apple.com/us/app/beluga-classic-film-filters/id6744041061

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.