Spring
[Spring] 스프링 빈
삶_
2022. 7. 3. 22:37
스프링 빈 등록
- @Bean, @Component 등이 붙여진 클래스들을 모두 호출해 스프링 컨테이너에 등록
@Component
- 개발자가 직접 작성한 클래스를 빈으로 자동 등록하기 위한 어노테이션
- 싱글톤 클래스 빈을 생성
- @Component("경로") : 경로 = 설정한 클래스 빈의 이름
@ComponentScan
- @Component, @Configuration 을 검색해 스프링 빈으로 자동 등록
- 만약 등록되어있는 스프링 빈을 또 수동으로 만들면 수동으로 만든 것으로 덮어씌워짐.
- 빈의 기본 이름 : MemberServiceImpl 클래스 -> memberServiceImpl
- 빈 이름 직접 지정 : @Component("지정할 이름")
- 스캔 대상
- 아래 어노테이션이 붙은 클래스를 찾아 빈을 생성하고 ApplicationContext에 등록해줌
- @Component : 컴포넌트 스캔에서 사용.
- @Controller : 스프링 MVC 컨트롤러로 인식. 내부에 @Component 포함
- @Service : 스프링 비즈니스 로직에서 사용, 특별한 처리를 하진 않음
- @Repository : 스프링 데이터 접근 계층으로 인식, 데이터 계층 예외를 스프링 예외로 변환
- @Configuration : 스프링 설정 정보로 인식, 스프링 빈이 싱글톤을 유지하도록 한다
- 탐색할 페이지의 시작 위치 지정
- @ComponentScan (basePackages = "hello.core"),
- basePackages : 지정한 클래스의 탐색할 패키지의 시작 위치를 지정함
- basePackages = {"여러개","넣는법"}
- 지정하지 않으면 @ComponentScan이 붙은 클래스의 패키지가 시작 위치가 됨
- @ComponentScan (basePackages = "hello.core"),
@Configuration
- @Bean을 사용하는 클래스는 @Configuration 도 함께 사용되어야 함
- 개발자가 직접 제어가 불가능한(수동으로 해야하는) 외부 라이브러리 등에 보통 사용함
- 스프링은 CGLIB 라는 바이트코드를 조작하는 라이브러리를 사용해서 @Configuration 이 들어간 클래스를 상속받은 임의의 다른 클래스를 만들고, 그 클래스를 스프링 빈으로 등록함
- 해당 클래스에서 1개 이상의 빈을 생성하고 있음을 명시함
- @Component의 한 종류