컨테이너에 등록된 모든 빈 조회 [#13] #15
* junit5부터는 public 설정을 안해도 된다. (3개 예시 중 아무거나 써도 상관 없다.)
public class ApplicationContextInfoTest {
void findAllBean() {
}
}
public class ApplicationContextInfoTest {
public void findAllBean() {
}
}
class ApplicationContextInfoTest {
void findAllBean() {
}
}
@Test
@DisplayName("모든 빈 출력하기")
void findAllBean() {
// 정의된 이름을 등록
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
// iter + tab → for 문 자동 완성
for (String beanDefinitionName : beanDefinitionNames) {
// key 값
Object bean = ac.getBean(beanDefinitionName);
// value 값
System.out.println("name = " + beanDefinitionName + " object = " + bean);
}
}
bean 정의된 이름을 등록한다. ( * 단축키 : ctrl + alt + v )
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
* iter 을 입력한 후 tab 키를 누르면 for문이 자동완성 된다.
for (String beanDefinitionName : beanDefinitionNames) {
}
key 값( * 단축키 : ctrl + alt + v )
Object bean = ac.getBean(beanDefinitionName);
타입 지정을 안해서 Object가 뜬다
value 값 (* 단축키 : soutv ➡️ 변수 명 print 한다. )
System.out.println("name = " + beanDefinitionName + " object = " + bean);
실행 결과
→ 스프링에 등록된 모든 빈 정보를 출력할 수 있다.
ac.getBeanDefinitionNames() : 스프링에 등록된 모든 빈 이름을 조회한다.
ac.getBean() : 빈 이름으로 빈 객체(인스턴스)를 조회한다.
내가 작성한 코드만 보고 싶으면?
스프링이 내부에서 사용하는 빈은 제외하고, 내가 등록한 빈만 출력하기
@Test
@DisplayName("애플리케이션 빈 출력하기")
void findApplicationBean() {
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
// getBeanDefinition : bean에 대한 정보들
BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName);
// getRole() : application을 등록하기 위해 개발한 bean or 외부 라이브러리
if (beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) {
Object bean = ac.getBean(beanDefinitionName);
System.out.println("name = " + beanDefinitionName + " object = " + bean);
}
}
}
getBeanDefinition : bean에 대한 정보들
BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName);
Role ROLE_APPLICATION : 직접 등록한 애플리케이션 빈
Role ROLE_INFRASTRUCTURE : 스프링이 내부에서 사용하는 빈
if (beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) {
}
getRole() : application을 등록하기 위해 개발한 bean or 외부 라이브러리
스프링이 내부에서 사용하는 빈은 getRole() 로 구분할 수 있다.
실행 결과
'WIL' 카테고리의 다른 글
28주차 (0) | 2022.03.27 |
---|---|
27주차 - 스터디(BeanDefinition , 싱글톤) (0) | 2022.03.20 |
25주차 (0) | 2022.03.06 |
24주차 - commit 기록 지우기 (0) | 2022.02.27 |
23주차 - 생성자 (0) | 2022.02.20 |