인프런 김영한 선생님 스프링 핵심 원리 강의를 보고 정리한 내용입니다.
스프링 컨테이너 생성
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(AppConfig.class);
- ApplicationContext를 스프링 컨테이너라 한다.
- ApplicationContext는 인터페이스이다. (다형성 적용)
- 스프링 컨테이너는 어노테이션 기반의 자바 설정 클래스로 만들 수 있다.
스프링 컨테이너의 생성 과정
1. 스프링 컨테이너 생성
- new AnnotationConfigApplicationContext(AppConfig.class);
- 스프링 컨테이너를 생성할 때는 구성 정보를 지정해 주어야 하며, AppConfig.class를 구성 정보로 지정하였다.
2. 스프링 빈 등록
- 스프링 컨테이너는 파라미터로 넘어온 설정 클래스 정보를 사용해서 스프링 빈을 등록한다.
- 빈 이름은 메서드 이름이다.
- 빈 객체는 반환값이다.
주의사항
빈 이름은 항상 다른 이름으로 부여해야 한다. 같은 이름을 부여하면 빈이 무시되거나 덮어씌워진다.
3. 스프링 빈 의존관계 설정
- 스프링 컨테이너는 설정 정보를 참고해서 의존관계를 주입(DI)한다.
컨테이너에 등록된 빈 조회
모든 빈 조회하기
- ac.getBeanDefinitionNames() : 스프링에 등록된 모든 빈 이름을 조회한다.
- ac.getBean() : 빈 이름으로 빈 객체를 조회한다.
애플리케이션 빈 조회하기
- 스프링 내부에서 사용하는 빈은 제외하고, 본인이 등록한 빈만 출력할 수 있다.
- 스프링이 내부에서 사용하는 빈은 getRole()로 구분할 수 있다.
- ROLE_APPLICATION : 일반적으로 사용자가 정의한 빈
- ROLE_INFRASTRUCTURE : 스프링이 내부에서 사용하는 빈
동일한 타입이 둘 이상일 때 빈 조회하기
- ac.getBeansOfType()을 사용하면 해당 타입의 모든 빈을 조회할 수 있다.
- 같은 타입의 빈이 둘 이상이면 오류가 발생하므로 빈 이름을 지정해주어야 한다.
'Dev > Spring' 카테고리의 다른 글
[Spring] @ComponentScan (0) | 2023.09.13 |
---|---|
[Spring] 싱글톤 패턴과 싱글톤 컨테이너 (0) | 2023.09.12 |
[Spring] 정적인 클래스 의존관계 vs. 동적인 객체 인스턴스 의존 관계 (0) | 2023.09.11 |
[Spring] AppConfig와 제어의 역전(IoC) (0) | 2023.09.10 |
[Spring] OCP, DIP를 위반하는 클라이언트 코드 고치기 (feat. DI) (0) | 2023.09.10 |