본문 바로가기

두두의 IT/Spring

컴포넌트 스캔

728x90

스프링 빈 등록 방법

1. XML <bean>

2. @Bean

3. @ComponentScan, @Component, @Autowired(생성자에서 여러 의존관계도 한 번에 주입 가능)

컴포넌트 스캔은 @Component 뿐만 아니라 다음 내용도 추가로 포함됨

@Component : 컴포넌트 스캔에서 사용

@Controller : 스프링 MVC 컨트롤러에서 사용. 스프링 MVC 컨트롤러로 인식

@Service : 스프링 비즈니스 로직에서 사용

@Repository : 스프링 데이터 접근 계층에서 사용. 스프링 데이터 접근 계층으로 인식하고, 데이터 계층의 예외를 스프링 예외로 변환해준다.

@Configuration : 스프링 설정 정보에서 사용. 스프링 설정 정보로 인식하고 스프링 빈이 싱글톤을 유지하도록 추가 처리를 한다.

 

애노테이션에는 상속 관계라는 것이 없다. 그래서 이렇게 애노테이션이 특정 애노테이션을 들고 있는 것을 인식할 수 있는 것은 자바 언어가 지원하는 기능은 아니고 스프링이 지원하는 기능이다.

 

 

FilterType

  • ANNOTATION : 기본값. 애노테이션을 인식해서 동작함
  • ASSIGNABLE_TYPE : 지정한 타입과 자식 타입을 인식해서 동작함
  • ASPECTJ : AspectJ 패턴 사용
  • REGEX : 정규표현식
  • CUSTOM : TypeFilter이라는 인터페이스를 구현해서 처리

 

 

자동 빈 등록 vs 자동 빈 등록

: 컴포넌트 스캔에 의해 자동으로 스프링 빈이 등록되는데, 그 이름이 같은 경우 스프링은 오류를 발생시킨다

-> ConflictingBeanDefinitionException 발생

 

자동 빈 등록 vs 수동 빈 등록

: 수동 빈이 우선권을 가짐 -> 안 하는게 좋음..

 

 

 

인프런
스프링 핵심 원리 - 기본편
컴포넌트 스캔
컴포넌트 스캔과 의존관계 자동 주입 시작하기
탐색 위치와 기본 스캔 대상
필터
중복 등록과 충돌

 

 

'두두의 IT > Spring' 카테고리의 다른 글

lombok  (0) 2022.10.31
의존관계 자동 주입  (0) 2022.10.29
싱글톤  (0) 2022.10.24
BeanDefinition  (0) 2022.10.22
BeanFactory와 ApplicationContext  (0) 2022.10.22