컴포넌트 스캔

HYUNBIN CHO·2021년 4월 14일
0

spring

목록 보기
6/23
post-thumbnail

🔸@Bean, XML의 < bean >을 통해서 스프링 빈을 직접 등록하는 방법을 사용했다.

🔸하지만 등록해야할 스프링 빈이 수백개가 된다면..?

➡️ 스프링이 설정 정보가 없어도 자동으로 스프링 빈을 등록할 수 있도록 @ComponentScan이라는 기능을 제공한다.
➡️ 더불어 의존관계도 자동으로 주입하는 @Autowired 기능도 제공한다.

🔷 @ComponentScan과 의존관계 자동 주입

🔸 @ComponentScan : @Component가 붙은 클래스들을 다 찾아서 스프링 빈으로 자동으로 등록해준다.
🔸 @ComponentScan과 @Autowired 사용

== 설정 클래스 ==
@Configuration
@ComponentScan
public class AppConfig{}

== 서비스 클래스 ==
@Component
public class MemberServiceImpl implements MemberService{
    @Autowired 
    public MemberServiceImpl(MemberRepository memberRepository){
    	this.memberRepository = memberRepository;
    }

🔸 기존의 AppConfig와의 차이점은 @Bean을 사용해서 등록한 스프링 빈 클래스가 하나도 없다.
🔸 사용할 때는 기존과 동일하다.

ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService = ac.getBean(MemberService.class);

🔷 @ComponentScan의 탐색위치와 기본대상

🔹 탐색위치

🔸@ComponentScan은 어디서부터 스프링 빈을 찾아야 할 지 시작위치를 지정할 수 있다.
🔸기본값 : @ComponentScan이 붙은 설정 정보 클래스의 패키지부터 그 하위의 모든 클래스

@ComponentScan(basePackages="hello.core.member")
@ComponentScan(basePackages={"hello.core", "hello.servlet"})

🔹기본 스캔 대상

@Component : 컴포넌트 스캔이 찾는 기본 대상
@Configuration : 스프링 설정정보로 인식하고 스프링 빈이 싱글톤을 유지하도록 추가 처리를 한다.
@Controller : 스프링 MVC컨트롤러로 인식
@Repository : 스프링 데이터 접근 계층으로 인식하고 데이터 계층의 예외를 스프링 예외로 변환해준다.
@Service : 스프링 비지니스 로직에서 사용(특별한 처리X, 다만 개발자들이 핵심 비지니스 로직이 있는
클래스라는 걸 인식하는 데 도움)





https://www.inflearn.com/course/스프링-핵심-원리-기본편#

profile
백견이 불여일타

0개의 댓글