컴포넌트 스캔

이연희·2022년 2월 3일
0

Spring

목록 보기
32/105

컴포넌트 스캔

🔹 @ComponentScan: 컴포넌트 스캔 어노테이션, 이름 그대로 @Component 어노테이션이 붙은 클래스를 스캔에서 스프링 빈으로 등록한다.
🔹 컴포넌트 스캔을 사용하면 @Configuration이 붙은 설정 정보도 자동으로 등록된다.
🔹 AppCofig, TestConfig 등 앞에서 만들었던 설정 정보가 함께 등록되고 실행되기 때문에 excludeFilters를 사용해서 설정 정보는 컴포넌트 스캔 대상에서 제외했다.

🔸 AutoAppConfig.java

@Configuration
@ComponentScan(
	excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig{
}

@ComponentScan

@Autowired 의존관계 자동 주입

🔹 생성자에 @Autowired를 지정하면 스프링 컨테이너가 자동으로 해당 스프링 빈을 찾아서 주입한다.

자동, 수동 빈 등록

🔹 아래의 경우 자동 빈 등록보다 수동 빈 등록이 우선권을 가진다.
🔹 수동 빈이 자동 빈을 오버라이딩 한다.

@Component
public class MemoryMemberRespository implements MemberRespository{}

@Configuration
@ComponentScan(
	excludeFilters = @Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig{
	@Bean(name = "memoryMemberRespository")
    public MemberRespository memberRepository(){
    	return new MemoryMemberRepository();
    }
}

🔹 수동 빈 등록시 로그:
"Overriding bean definition for bean 'memoryMemberRepository' with a different definition: replacing"

🔹 자동, 수동 빈 등록 오류 발생시 스프링 부트 에러 메세지:
"Consider renaming one of the beans or enabling overriding by setting
spring.main.allow-bean-definition-overriding=true"

profile
공부기록

0개의 댓글