//스프링 컨테이너 생성
ApplicationContext applicationContext =
new AnnotationConfigApplicationContext(AppConfig.class);
- ApplicationContext` 를 스프링 컨테이너라 한다.
- `ApplicationContext` 는 인터페이스이다.
- 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.
//스프링 컨테이너 생성과정
//스프링 빈 등록
//컨테이너에 등록된 모든 빈 조회
//스프링 컨테이너에 실제 스프링 빈들이 잘 등록 되었는지 확인해보자.
package hello.core.beanfind;
import hello.core.AppConfig;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
class ApplicationContextInfoTest {
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
@Test
@DisplayName("모든 빈 출력하기")
void findAllBean() {
//alt + enter
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
//iter + tab 하면 for문 자동완성
for (String beanDefinitionName : beanDefinitionNames) {
//alt + enter 하면 object가 나옴 -> 타입을 지정하지 않았기 때문에
Object bean = ac.getBean(beanDefinitionName);
System.out.println("Name = " + beanDefinitionName + " object = " + bean);
}
}
@Test
@DisplayName("애플리케이션 빈 출력하기")
void findApplicationBean() {
//alt + enter
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
//iter + tab 하면 for문 자동완성
for (String beanDefinitionName : beanDefinitionNames) {
BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName);
//Role ROLE_APPLICATION : 직접 등록한 애플리케이션 빈
//Role ROLE_INFRASTRUCTURE : 스프링이 내부에서 사용하는 빈
if (beanDefinition.getRole() == BeanDefinition.ROLE_INFRASTRUCTURE ){
Object bean = ac.getBean(beanDefinitionName);
System.out.println("Name = " + beanDefinitionName + " object = " + bean);
}
}
}
}
<설명>
예를들어 애플리케이션 빈 TDD 실행 결과 시.
내가 등록한 스프링 빈 확인 가능하다.
반응형
'Develop > Spring (실습)' 카테고리의 다른 글
null 옵션처리 ( 주입할 빈이 없이도 동작해야 할 때 ) (0) | 2023.08.26 |
---|---|
필터 ( includeFilters & excludeFilters ) (0) | 2023.08.20 |
Spring Basic (스피링 bean조회 기본) (0) | 2023.08.08 |
Thymeleaf 문법 사용하기 (0) | 2023.06.16 |
Spring-Boot-Devtools 라이브러리 (+사용방법) (0) | 2023.06.16 |