반응형
스프링 IoC 컨테이너
DI를 사용하기 위해서는 객체 생성이 우선 되어야 하는데 이것을 생성해주는 것이 스프링이다.
필요한 객체를 생성하여 관리하는 역할을 대신해준다.
- 빈(Bean) : 스프링이 관리하는 객체
- 스프링 IoC 컨테이너 : '빈'을 모아둔 통
스프링 IOC컨테이너에 어떻게 빈을 등록하고 사용하는지 알아보자
스프링 '빈' 등록 방법
1. @Component
>클래스 선언 위에 설정
@Component
public class ProductService { ... }
>스프링 서버가 뜰 때 스프링 IoC에 '빈' 저장
@Component 클래스에 대해서 스프링이 해주는 일
// 1. ProductService 객체 생성
ProductService productService = new ProductService();
// 2. 스프링 IoC 컨테이너에 빈 (productService) 저장
// productService -> 스프링 IoC 컨테이너
>스프링 '빈' 이름 : 클래스의 앞글자만 소문자로 변경
ex)public class ProductService => productService
> '빈' 아이콘 확인 => 스프링 IoC에서 관리할 '빈' 클래스라는 표시
> @Component 적용 조건
- @ComponentScan 에 설정해 준 packages 위치와 하위 packages들
@Configuration
@ComponentScan(basePackages = "com.sparta.springcore")
class BeanConfig { ... }
- @SpringBootApplication 에 의해 default 설정이 되어 있음
2. @Bean
> 직접 객체를 생성하여 빈으로 등록요청
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class BeanConfiguration {
@Bean
public ProductRepository productRepository() {
String dbUrl = "jdbc:h2:mem:springcoredb";
String dbId = "sa";
String dbPassword = "";
return new ProductRepository(dbUrl, dbId, dbPassword);
}
}
>스프링 서버가 뜰 때 스프링 IoC에 '빈' 저장
// 1. @Bean 설정된 함수 호출
ProductRepository productRepository = beanConfiguration.productRepository();
// 2. 스프링 IoC 컨테이너에 빈 (productRepository) 저장
// productRepository -> 스프링 IoC 컨테이너
- 스프링 '빈' 이름 : @Bean이 설정된 함수명
public ProductRepository productRepository() {..} =>productRepository
- '빈' 아이콘 확인 → 스프링 IoC 에 '빈' 에 등록될 것이라는 표시
반응형
'I LEARNED > TIL' 카테고리의 다른 글
TIL_@Column #Spring (0) | 2022.08.07 |
---|---|
TIL_@RequestMapping #Spring (0) | 2022.08.06 |
TIL_ 스프링 IOC 컨테이너 -빈 사용방법 (0) | 2022.08.05 |
TIL_ResponseBody #Spring (0) | 2022.08.04 |
[TIL] SpringMVC동작이해 (0) | 2022.08.04 |
댓글