프로그래밍 끄적끄적
[SpringBoot] 스프링 빈 본문
🌳 스프링 빈이란?
빈(Bean)은 스프링 IoC 컨테이너가 관리하는 자바 객체를 말한다.
IoC 컨테이너에 의해 인스턴스화, 관리, 생성되며 보통 싱글톤으로 존재한다.
🌳 스프링 빈 이름 정의
스프링 빈 이름은 대체로 메서드 이름을 사용하며 @Bean(name="[빈 이름]")으로 직접 명시해 줄 수도 있다.
이때 주의할 점은 동일한 빈 이름이 있어서는 안 된다는 것이다.
🌳 스프링 빈 출력하기
[ApplicationContext].getBeanDefinitionNames(): 스프링에 등록된 모든 빈 이름을 조회
[ApplicationContext].getBean([빈 이름], [빈 타입]): 빈 이름과 타입으로 빈 객체를 조회
▪ 구현체 타입으로 조회해도 되지만, 구현에 의존하는 것은 좋지 않음
[ApplicationContext].getBean([빈 이름]): 빈 이름으로 빈 객체를 조회
[ApplicationContext].getBean([빈 타입]): 빈 타입으로 빈 객체를 조회
[ApplicationContext].getBeansOfType([빈 타입]): 빈 타임으로 빈 객체들을 조회
▪ Map<[빈 이름], [빈 객체]> 로 반환
[BeanDefinition].getRole()
▪ BeanDefinition.ROLE_APPLICATION: 일반적으로 사용자가 정의한 빈
▪ BeanDefinition.ROLE_INFRASTRUCTURE: 스프링이 내부에서 사용하는 빈
🍃 예외 처리
NoSuchBeanDefinitionException: 조회된 빈이 0개일 때 발생
NoUniqueBeanDefinitionException: 조회된 빈이 2개 이상일 때 발생
🌳 스프링 빈 상속 관계
부모 타입으로 조회 시, 자식 타입도 함께 조회된다.
ex) 모든 빈 클래스는 Object 클래스를 상속하고 있으므로 getBean(Object.class) 로 조회하면 모든 스프링 빈이 조회됨
🌟 Test 코드에서 Exception 검증
Assertions.assertThrows([Exception 타입], [람다식]);
ex) Assertions.assertThrows(NoSuchBeanDefinitionException.class, () -> ac.getBean("xxxx"));
'백엔드 > 스프링' 카테고리의 다른 글
[SpringBoot] BeanDefinition (0) | 2021.09.01 |
---|---|
[SpringBoot] 스프링 컨테이너 (0) | 2021.09.01 |
IntelliJ 단축키(Window) (0) | 2021.08.03 |
[SpringBoot] 스프링 입문 - 회원 웹 기능 (0) | 2021.08.03 |
스프링 입문 - 컴포넌트 스캔과 자동 의존관계 설정 (0) | 2021.07.29 |