스프링이 관리하는 빈(Bean)으로 등록하겠다는 표시
특정 패키지를 스캔하여, @Component 또는 @Controller, @Service, @Repository 가 붙은 클래스를 자동으로 스프링 빈으로 등록하는 역할
![]() |
|---|
✔️ @Component → "내가 등록할 테니까 너는 찾아만 줘"
✔️ @ComponentScan → "어디 있는지 모르니까 네가 찾아서 등록해 줘"
❗@ComponentScan을 써야 @Component가 붙은 클래스들을 자동으로 찾아서 빈으로 등록할 수 있다❗
생성자 주입 (권장!)
필드 주입 (비추천)
세터 주입 (선택적 의존성 주입할 때 사용)
@Component
public class Car {
private final Engine engine;
@Autowired
public Car(Engine engine) { // 생성자로 주입
this.engine = engine;
}
}
✔️ final 키워드를 사용해 객체가 변경되지 않도록 할 수 있다.
❗생성자 주입 방식에서는 final 키워드로 필드를 선언해주기 필수❗ → 무조건 값이 있도록 만들어준다.
필드에 final은 생성자 주입 방식만 사용할 수 있다.
✔️ 테스트 코드 작성이 편리해진다.
➡️ @Autowired를 사용하면 개발자가 직접 객체를 생성할 필요 없이, 스프링이 알아서 주입해 줘서 편리하다.
![]() |
|---|
→ @Component로 빈을 만들고,
→ @Autowired로 주입하고,
→ @ComponentScan으로 자동 검색하면 IoC(제어의 역전)를 완벽하게 활용할 수 있다.