Spring 어플리케이션의 핵심으로, Bean의 생명주기를 관리하고 의존성 주입을 처리한다.
[ 주요 유형 ]
[ 주요 기능 ]
[ 컨테이너의 기본 동작 ]
설정 클래스 로딩 → Bean 정의 스캔 → Bean 객체 생성 → 의존성 주입 → 초기화 콜백 → 애플리케이션 실행 → 소멸 전 콜백 → 컨테이너 종료
⚡[ 주의사항 ]⚡
DI(Dependency Injection)은 IoC(Inversion of Control)를 구현하는 방법 중 하나이다. (둘이 같은 개념은 아니다.)
Spring은 IoC를 DI를 통해 구현하는 대표적인 프레임워크
Spring의 설정 클래스임을 나타내는 어노테이션
이 어노테이션이 붙은 클래스 안에서 @Bean을 통해 빈을 등록할 수 있다.
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserService(userRepository());
}
@Bean
public UserRepository userRepository() {
return new UserRepository();
}
}
[ 주요 특징 ]
[ 주의 사항 ]
스프링 컨테이너가 생성한 빈 객체는 싱글톤 객체이다.
@Bean 이 붙은 메서드에 대해 한 개의 객체만 생성
해당 메서드를 통해서 스프링 컨테이너가 관리하는 빈 객체를 알 수 있다.
인자로는 2개가 들어가며,
첫번째 파라미터로는 빈의 이름(메서드명), 두번째 파라미터로는 빈의 리턴 타입.
파라미터를 잘못 입력했을 때 발생하는 Exception 들 :
NoSuchBeanDefinitionExceptionBeanNotOfRequiredTypeExceptionNoUniqueBeanDefinitionException결론 : 의존 주입 대상만 스프링 빈으로 등록하자!!!!
책 - 초보 웹 개발자를 위한 스프링 5 프로그래밍 입문
Claude.ai