티스토리 뷰
컴포넌트 Component 란?
Component는 스프링부트에서 작성된 class 를 Bean으로 만드는 것이다.
여기서 Bean은 자바의 객체와 다를 바 없다. 그러나 스프링에서 등록한 객체는 싱글톤으로 관리해준다는 차이점이 존재한다. (요청이 들어올 때마다 객체가 여러개 생성되지 않도록)
또한, @Bean은 메서드 단에서 설정해주지만, @Component는 클래스 단에서 설정해준다.
컴포넌트 스캔 Component Scan 란?
컴포넌트 스캔은 @Component가 붙은 클래스 전부를 스프링 빈으로 등록한다.
기본적으로 빈의 이름은 클래스명을 사용하며 맨 앞글자만 소문자로 등록된다.
Component를 사용하지 않는 경우에는 직접 Bean을 일일히 등록하고, setter 를 이용해서 직접 의존성 주입을 해주었는데 Component를 사용할 때에는 Autowired 를 이용해서 자동으로 의존성을 주입하도록 한다. (강의에서는 설정 정보를 안쓴다고 표현)
생성자에 @Autowired 를 지정하면, 자동으로 스프링부트가 빈의 목록을 조회하고 일치하는 스프링 빈을 찾아서 주입해준다.
기본적으로 타입을 이용하여 조회한다.
Component 스캔의 시작 위치를 지정해줄 수 있다.
@ComponentScan{
basePackages = "hello.core"
}
위와 같이 설정하면 hello.core 하위에 있는 파일들은 전부 스캔한다는 것.
따로 설정하지 않으면 @ComponentScan 이 선언된 파일이 위치한 곳이 basePacakges 로 지정된다.
따라서 관례적으로 설정 정보 클래스의 위치를 최상단에 둔다. 이렇게 될 경우에는 필요한 파일들만 스캔하게 되기 때문이다.
'TIL - 2022' 카테고리의 다른 글
스프링부트 - 빈 스코프 (0) | 2022.07.10 |
---|---|
스프링부트 - 의존관계 주입 (0) | 2022.07.07 |
IOC / DI 컨테이너 (0) | 2022.07.05 |
DIP 원칙 / OCP 원칙 (0) | 2022.07.04 |
[TIL 024] 20220501 (0) | 2022.05.02 |