인프런 - 스프링 입문 강의를 참고하였습니다.
📢 스프링 빈 등록 2가지 방법
- 컴포넌트 스캔과 자동 의존관계 설정
- @Controller, @Service, @Repository는 @Component 어노테이션이 포함되어 있는데, 스프링은 실행이 될 때 @Component관련된 어노테이션이 있으면 스프링 컨테이너에 해당 빈들을 등록해준다.
- @Autowired는 등록된 빈(객체)들 사이를 연결해줌으로써 Controller가 Service를 사용할 수 있도록 해주고, Service가 Repository를 사용할 수 있도록 해준다.
- 자바 코드로 직접 스프링 빈 등록하기
- 빈등록을 위해서 Config 클래스를 하나 만들어서 @Configuration 어노테이션을 붙여준다. @Configuration어노테이션은 ‘이 클래스는 자바 빈 설정을 위한 클래스’라는 것을 스프링에게 알려주기 위한 것이다.
- @Bean 을 통해서 객체를 등록해준다.
📢 Dependency Injection(DI) 의 3가지 방법
- 생성자 주입
- 필드 주입
- 필드 주입은 유연한 변경이 불가능하기 때문에 딱히 좋은 방식이 아니다.
- setter 주입
- 조립시점에서 값을 지정한 다음에 변경할 수 없도록 해야 하는데 setter는 public이기 때문에 언제든지 변경이 가능하다. 따라서 중간에 변경될 위험이 있기 때문에 되도록이면 생성자 주입을 통해서 주입하는 것이 좋다.