Spring에 관한 기초적인 내용 정리
객체가 의존성이 있거나 그 자체로 의존성인 경우 스프링 컨텍스트에 추가해야 한다.
빈 : 스프링에서 관리하는 인스턴스
스프링 컨텍스트 생성 시 @Bean 메서드 호출, 반환 값을 컨텍스트에 추가
- 스프링 컨텍스트 및 인스턴스 생성
- 스프링 컨텍스트에 여러 개의 빈 주입
- 스프링 컨텍스트에 같은 종류의 빈 주입
- Bean 이름
- Bean 메소드 이름
- @Primary
stereotype annotation : 스프링이 인스턴스를 생성하고 컨텍스트에 추가하는 데 필요한 클래스에 사용
- @Component 빈 주입
- @ComponentScan(basePackages = " ")
- @PostConstruct
의존성 : A 빈이 B 빈을 사용한다면 A 빈이 B 빈에 의존성을 갖는 것
순환 의존성 : A 빈이 B 빈을 의존하고 B 빈이 A 빈을 의존하는 경우 빈 생성에 있어 문제가 발생한다.
service : 사용 사례 구현하는 객체
repository : 데이터베이스와 직접 작업하는 객체
proxy : 앱 외부와 통신을 담당하는 객체
model : 앱이 사용하는 데이터를 모델링하는 객체 (POJO : 의존성이 없는 단순 객체)
- interface, abstract class : 인스턴스화 할 수 없기 때문.
- model : 의존성이 없고 그 자체로 의존성이 아니기 때문.
- @Primary
- @Qualifier
고유한 인스턴스 이름에 대해 동일한 인스턴스 참조를 얻는다. 변경 가능한 속성 포함 권장X
- @Bean : 클래스가 같더라도 이름이 다르다면 인스턴스를 여러 개 가질 수 있다.
- 스테레오타입 애너테이션 : 클래스 당 하나의 인스턴스를 가진다.
빈이 사용되지 않더라도 빈을 생성한다.
빈이 사용될 때 빈을 생성한다.
빈 이름을 참조할 때마다 새로운 인스턴스가 생성된다. 변경 가능한 속성 포함 가능