@Component : 클래스 정보를 스프링 컨테이너에 등록하여 Bean으로 관리@Component를 포함하는 주요 어노테이션@Controller : 웹 요청 처리용 컨트롤러 등록@RestController : REST API 전용 컨트롤러 등록 (@Controller + @ResponseBody)@Service : 비즈니스 로직 처리용 서비스 클래스 등록@Repository : DAO 클래스 등록 (예외 변환 기능 포함)@Configuration : 설정 클래스 등록 (Java 기반 설정)📌 스프링 MVC 패턴은 IOC 기반으로 동작하며,
@Component계열 어노테이션은 Bean 등록의 핵심
@Autowired : 스프링 컨테이너에 등록된 Bean을 자동으로 주입// 멤버변수 방식 (비추천 - 테스트 어려움)
@Autowired
private 클래스명 변수명;
// 생성자 방식 (권장 방식)
private final 클래스명 변수명;
@Autowired
public 클래스명(클래스명 매개변수명) {
this.변수명 = 매개변수명;
}
// Setter 방식
@Autowired
public void set변수명(클래스명 매개변수명) {
this.변수명 = 매개변수명;
}
✅ 생성자 주입이 가장 권장됨 (불변성 보장, 테스트 용이)
✅ @Autowired는 생략 가능 (스프링 4.3+부터 생성자 1개일 경우 자동 주입)
⚠️ DTO, VO, Entity는 컨테이너가 관리하지 않으므로 DI 대상이 아님