인프런의 '스프링 핵심 원리 (기본편)' 을 듣고 해당 내용을 정리한 포스트 입니다.
강의 바로가기
ApplicationContext를 스프링 컨테이너라 한다.
BeanFactory도 있으나 거의 사용하는 경우 없음
ApplicationContext는 인터페이스이다.
ApplicationContext를 구현한 구현체 중 하나가 AnnotationConfigApplicationContext이다.
-> 다형성 만족!
스프링 컨테이너는 XML을 기반으로 만들 수 있고, 에노테이션 기반의 자바 설정 클래스로 만들 수 있다.
빈 이름은 메소드 명을 사용하나, 직접 부여할 수도 있다.
항상 다른 이름을 부여해야 한다.
동적인 객체 인스턴스 의존관계까지 연결해 줌
스프링은 빈을 생성하고 의존관계를 주입하는 단계가 나누어져 있다.
그러나 자바 코드로 스프링 빈을 등록하면, 생성자를 호출하면서 의존관계 주입도 한번에 처리된다.
실제 스프링의 라이프 사이클은 두 단계가 나누어져 있음. 뒤의 자동 의존관계 주입 볼때 참고하자!
위쪽의 빈들은 스프링 내부적으로 생성되는 빈
Role ROLE_APPLICATION: 직접 등록한 애플리케이션 빈
Role ROLE_INFRASTRUCTURE: 스프링이 내부에서 사용하는 빈
오른쪽의 로직을 실행 시, 왼쪽의 에러가 발생해야 한다는 테스트 코드\
부모 타입으로 조회하면, 자식 타입도 함께 조회한다.
모든 자바객체의 최고 부모인 'Obejct' 타입으로 조회하면, 모든 스프링 빈으로 조회한다.