컴포넌트 스캔: 수동 등록한 빈과 충돌

TaeYeong Jeong·2022년 5월 19일
0

초보 웹 개발자를 위한 스프링5 프로그래밍 입문
Ch5 p139

스캔할 때 사용하는 빈 이름과 수동 등록한 빈 이름이 같은 경우 수동 등록한 빈이 우선한다. 즉 MemberDao 타입 빈은 AppCtx에서 정의한 한 개만 존재한다.

@Configuration
@ComponentScan(basePackages = {"spring"}
//        , excludeFilters = @Filter(type = FilterType.ASPECTJ, pattern = "spring.*Dao")
)
public class AppCtx {

    @Bean
    public MemberDao memberDao() {
        System.out.println("manual: " + this);
        return new MemberDao();
    }
    ...
}
@Component
public class MemberDao {

    public MemberDao() {
        System.out.println("auto: " + this);
    }
    ...
}
System.out.println(ctx.getBean(MemberDao.class));
manual: config.AppCtx$$EnhancerBySpringCGLIB$$8f711409@6591f517
auto: spring.MemberDao@345965f2
명령어를 입력하세요.
spring.MemberDao@345965f2

테스트 결과 자동으로 등록된 빈이 사용되었다. 버전이 바뀌면서 달라진 점인지 확인해 봐야겠다.

0개의 댓글