컴포넌트 스캔 (@Component)
- 설정 정보가 없어도 자동으로 @Component 어노테이션이 붙은 클래스를 스프링 빈으로 등록하는 기능이다.
- 스프링 빈의 기본 이름은 클래스명의 맨 앞글자만 소문자로 바꾼 후, 사용한다.
- 위치를 지정하여 하위에 있는 것을 모두 조회한다.
- 관례상 프로젝트 최상단에 둔다.
- 스프링부트는 @SpringBootApplication에 @ComponentScan이 존재한다.
의존관계 자동 주입@Autowired
- 생성자에 @Autowired를 지정하면, 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아 주입한다.
-
생성자 주입 ( 주로 사용된다 )
- 생성자를 통해 의존 관계를 주입 받는다.
- 생성자 호출시점에 1번만 호출된다.
- 불변, 필수 // 의존관계에 사용한다.
- 생성자 1개일시, 생략 가능하다.
-
수정자 주입(setter 주입)
- setter라 불리는 값 변경 메서드에서 의존관계를 주입한다.
- 선택, 변경 가능성이 있는 의존관계에 사용한다.
-
필드 주입
- 필드에 주입하는 방법이다.
- 코드가 간결하지만 외부에서 변경하기 힘들어 테스트가 힘들다.
- DI 프레임워크가 없으면 쓸모가 없다.
- 스프링 설정을 목적으로 하는 곳에서 특별한 용도로 사용된다.
-
일반 메서드 주입
생성자 주입
- 대부분의 의존관계는 애플리케이션 종료 전까지 변하면 안된다. (불변)
- final키워드를 사용하므로 주입 데이터 누락 시에 컴파일 오류가 발생한다.
- 프레임워크에 의존하지 않는다.