3.1 스프링 컨테이너 생성

스프링 컨테이너 생성

//스프링 컨테이너 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
  • ApplicationContext스프링 컨테이너라 한다.

    ApplicationContext 는 인터페이스이다.

  • 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.


  • 자바 설정 클래스를 기반으로 스프링 컨테이너(ApplicationContext)를 만들어보자.
    • new AnnotationConfigApplicationContext(AppConfig.class); → AppConfig.class를 파라미터로 넘긴다.
    • 이 클래스는 ApplicationContext 인터페이스의 구현체이다.
참고

정확히 스프링 컨테이너 를 부를 때,

  1. BeanFactory
  2. ApplicationContext

로 구분해서 불러야 하지만, BeanFactory를 직접 사용하는 경우는 거의 없어,
일반적으로 ApplicationContext를 스프링 컨테이너 라고 부른다.



스프링 컨테이너의 생성 과정


1. 스프링 컨테이너 생성

new AnnotationConfigApplicationContext(AppConfig.class)

해당 코드로 AppConfig.class 파일을 넘기면 스프링 컨테이너가 생성된다.

스크린샷 2025-05-15 오후 10.33.42.png (스프링 컨테이너가 AppConfig.class의 구성 정보를 확인한 후 스프링 빈을 등록한다.)

2. 스프링 빈 등록

@Bean
public MemberService memberService() {
	return new MemberServiceImpl(memberRepository());
}
  • Bean어노테이션이 붙은 메서드의 이름을 사용하여 빈을 등록한다.

스크린샷 2025-05-15 오후 10.38.28.png

** 빈 이름을 직접 부여할 수 있다. @Bean(name="memberService2")

3. 스프링 빈 의존관계 설정

  • @Bean이 붙은 메서드로 의존관계를 주입한다.
  • 단순히 자바 코드를 호출하는 것이 아닌, 싱글톤을 통해 객체 1개만 생성하도록 한다,

스크린샷 2025-05-15 오후 10.41.15.png

참고

  • 스프링은 빈을 생성하고, 의존관계를 주입하는 단계가 나누어져 있다.


컨테이너에 등록된 빈 조회하기

class ApplicationContextInfoTest {
	
	AnnotationConfigApplicationContext ac = new
	
	AnnotationConfigApplicationContext(AppConfig.class);
	
	@Test
	@DisplayName("모든 빈 출력하기")
	void findAllBean() {
		String[] beanDefinitionNames = ac.getBeanDefinitionNames();
		
		for (String beanDefinitionName : beanDefinitionNames) {
		
		Object bean = ac.getBean(beanDefinitionName);
		
		System.out.println("name=" + beanDefinitionName + " object=" +
		
		bean);
	
	}
	
}