이후로는 Classpath scanning and managed components 들 입니다
출처
- https://docs.spring.io/spring-framework/docs/3.0.x/spring-framework-reference/html/beans.html#beans-factory-collaborators
- 3.9 Annotation-based container configuration
싱글톤
- 스프링 IoC 컨테이너 인스턴스당 오직 하나의 빈 인스턴스만 생성되는 경우를 말한다.
- 싱글톤 빈은 무상태여야하고, 여러번 참조되어도 하나의 인스턴스만 생성되고 반환하기 때문에 시간적, 공간적 이점이 있다.
프로토타입
- 스프링 컨테이너에서 빈이 요청될 때마다 새로운 인스턴스가 생성된다. 빈이 상태를 가지고 있는 경우 사용한다.
리퀘스트
- 모든 HTTP 요청마다 빈 인스턴스가 생성되고, 스프링 웹 컨텍스트에서만 사용할 수 있다. 요청이 완료되면 즉시 폐기된다.
애플리케이션
- 웹 애플리케이션당 하나의 빈 인스턴스로 생성되고 웹 컨텍스트에서만 사용할 수 있다.
setter 주입
- 직접 setter를 구현해도 되지만, 의존 필드에 @Autowired을 지정하면 자동으로 setter 주입 방식을 사용한다.
- 순환참조의 위험이 있어 의존 관계가 명확하거나 테스트할 때 주로 사용된다.
생성자 주입
- 생성자를 정의하면 스프링이 알아서 의존관계를 찾아서 연결해준다. 직접 의존관계를 정의하기 때문에 순환참조의 위험이 덜하다. 또한 의존 객체를 불변객체로 지정한다면 생성자 주입 방식을 사용해야한다.
필드 주입
참고
https://yaboong.github.io/spring/2019/08/29/why-field-injection-is-bad/
https://docs.spring.io/spring-framework/docs/3.0.x/spring-framework-reference/html/beans.html