BeanFactory
스프링 빈 컨테이너의 최상위 인터페이스입니다. Bean을 생성하고 의존성 주입을 지원하는 간단한 컨테이너입니다.
1. Bean 생성
2. 라이프사이클 관리
ApplicationContext
BeanFactory를 상속한 형태로 BeanFactory 보다 익숙해보입니다. BeanFactory를 상속했기때문에 최상위 인터페이스의 모든 기능을 가지고 있습니다. 트랜잭션 관리, AOP 처리, DI, IoC 를 지원합니다.
BeanFactory와의 가장 큰 차이점은 컨테이너가 구동되는 시점에 객체들을 미리 생성하는 Pre-Loading 방식으로 보입니다.
Bean 등록 방법
이러한 Bean 들을 생성하고 의존성을 관리해줄려면 우선 IoC 컨테이너에 Bean을 등록해줘야 합니다.
1. Bean 설정 파일 (.xml)
이렇게 xml 파일에 일일히 bean을 등록하는건 매우 번거로운 작업입니다.
2. Component-Scan
그래서 등장한 기술이 Component-Scan 방식입니다.
Spring 2.5 부터 지원한 기술로 어노테이션으로 등록된 Bean을 등록하고 설정하는 방법입니다.
base-package는 등록된 하위 모든 패키지들을 찾아서 어노테이션으로 등록된 Bean을 컨테이너에 등록해주겠다는 뜻입니다.
3. Java Source
Bean 설정을 xml 말고 Java 소스 코드로 설정하는 방법입니다.
의존성 주입을 Java 코드로 직접 설정할 수 있습니다.
package hello.hellospring;
import hello.hellospring.repository.MemberRepository;
import hello.hellospring.repository.MemoryMemberRepository;
import hello.hellospring.service.MemberService;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
@Bean
public MemberService memberService() {
return new MemberService(memberRepository());
}
@Bean
public MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
References.
스프링 프레임워크 핵심 기술 [백기선님 인프런 강좌]
'Spring' 카테고리의 다른 글
의존성 주입(Dependency Injection) 3가지 방법, @Autowired 란? (0) | 2021.07.12 |
---|---|
IoC 컨테이너와 빈 (0) | 2021.07.03 |
[스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 후기 (0) | 2021.05.02 |