본문 바로가기
프로그래밍언어/Java

[Java] 스프링 컨테이너

by Yikanghee 2022. 1. 21.

스프링 컨테이너

  • ApplicationContext를 스프링 컨테이너라고 한다
  • 스프링 컨테이너는 @Configuration이 붙은 Config를 설정 정보로 사용한다
  • 여기서 @Bean이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다
  • 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다
  • 스프링 컨테이너 생성
//스프링 컨테이너 생성
ApplicationContext applicationContext =
 new
AnnotationConfigApplicationContext(AppConfig.class);
  • ApplicationContext를 스프링 컨테이너라고 하고 인터페이스이다
  • 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 어노테이션 기반의 자바 설정 클래스로 만들 수 있다
  • 스프링 컨테이너를 생성할 때는 구성 정보를 지정해주어야 한다
  • 구성정 보안에 @Bean이라고 적힌 생성자들의 빈 이름, 빈 객체가 들어간다

  • 모든 빈 출력하기
    • 실해하면 스프링에 등록된 모든 빈 정보를 출력할 수 있다
    • ac.getBeanDefinitionNames() → 스프링에 등록된 모든 빈 이름을 조회한다
    • ac.getBean() → 빈 이름으로 빈 객체(인스턴스)를 조회한다
  • 애플리케이션 빈 출력
    • 스프링이 내부에서 사용하는 빈은 제외하고, 내가 등록한 빈만 출력
    • (beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) → 일반적으로 사용자가 정의한 빈 출력
    • (beanDefinition.getRole() == BeanDefinition.ROLE_INFRASTRUCTURE) → 스프링이 내부에서 사용하는 빈 출력
  • BeanDefinition ( 스프링 빈 설정 메타 정보)
    • 위에서 등장한 BeanDefinition이 무엇인지 알아보자
    • 스프링은 자바 코드, XMLM, Groovy 등 다양하게 설정 형식을 지원한다 이것을 가능하게 하는 것이 BeanDefinition이다
    • 쉽게 말해서 역할과 구현을 개념적으로 나눈 것인데
    • 어떤 형식으로 든 지 읽어서 BeanDefinition에 넣으면 스프링 컨테이너는 어떠한 코드로 만들어졌는지 몰라도 스프링 빈을 생성할 수 있게 된다.

'프로그래밍언어 > Java' 카테고리의 다른 글

[Java] Mapping 요청 예시  (0) 2022.01.30
[Java] 스프링 MVC 구조 / 기본 기능  (0) 2022.01.27
[Java] 빈 스코프  (0) 2022.01.21
[Java] 스프링 의존관계 주입  (0) 2022.01.21
[Java] 롬북 lombok  (0) 2022.01.21

댓글