백정탈의 개발 블로그
spring-스프링 컨테이너와 스프링 빈 본문
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
ApplicationContext는 스프링컨테이너이다. new AnnotationConfigApplicationContext()를 통해 스프링 컨테이너를 만들어 준다. 그럼 비어있는 빈 저장소가 생겨 AppConfig.Class에 있는 @Bean 어노테이션 붙은 빈을 저장소에 등록해준다.
@Configuration
직접 등록할 스프링 빈을 애노테이션또는 Bean을 등록하기 위한 애노테이션
@Bean
빈 설정파일에 직접 빈을 등록한다.
@Configuration
static class SameBeanConfig {
@Bean
public MemberRepository memberRepository1() {
return new MemoryMemberRepository();
}
@Bean
public MemberRepository memberRepository2() {
return new MemoryMemberRepository();
}
}
스프링 빈저장소 | |
빈이름 | 빈 객체 |
memberRepository1 | MemoryMemberRepository@01 |
memberRepository2 | MemoryMemberRepository@01 |
BeanFactory 인테페이스
스프링 컨테이너의 최상위 인터페이스다.
스프링 빈을 관리하고 조회하는 역할을 담당한다.
getBean() 을 제공한다.
ApplicationContext 인테페이스
BeanFactory 기능을 모두 상속받아서 제공한다.
수많은 부가 기능 보유, 다양한 형식 지원
BeanDefinition=빈 설정 메타정보
Xml,자바코드인지 상관 없이 설정 정보를 읽고 설정 메타정보를 생성
스프링컨테이너는 추상화된 BeanDefinition을 바탕으로 메타정보를 설정한다.
BeanDefinition 메타정보 리스트
BeanClassName: 생성할 빈의 클래스 명(자바 설정 처럼 팩토리 역할의 빈을 사용하면 없음)
factoryBeanName: 팩토리 역할의 빈을 사용할 경우 이름, 예) appConfig
factoryMethodName: 빈을 생성할 팩토리 메서드 지정, 예) memberService
Scope: 싱글톤(기본값)
lazyInit: 스프링 컨테이너를 생성할 때 빈을 생성하는 것이 아니라, 실제 빈을 사용할 때 까지 최대한 생성을 지연처리 하 는 지 여부
InitMethodName: 빈을 생성하고, 의존관계를 적용한 뒤에 호출되는 초기화 메서드 명
DestroyMethodName: 빈의 생명주기가 끝나서 제거하기 직전에 호출되는 메서드 명
Constructor arguments, Properties: 의존관계 주입에서 사용한다. (자바 설정 처럼 팩토리 역할의 빈을 사용하면 없음)
'스프링' 카테고리의 다른 글
Spring-빈 생명주기 콜백 (0) | 2023.03.08 |
---|---|
Springs-의존관계 주입과 옵션처리 (0) | 2023.03.03 |
Spring-컴포넌트 스캔 (0) | 2023.03.01 |
Spring-싱글톤 컨테이너 (0) | 2023.02.27 |
Spring-DI (0) | 2023.02.22 |