컴포넌트 스캔에서 같은 빈 이름을 등록하면 어떻게 될까? 자동 빈 등록 vs 자동 빈 등록 수동 빈 등록 vs 자동 빈 등록 자동 빈 등록 vs 자동 빈 등록 컴포넌트 스캔에 의해 자동으로 스프링 빈이 등록되는데 , 그 이름이 같은 경우 스프링은 오류를 발생 시킨다. ConflictingBeanDefinitionException 예외 발생 수동 빈 등록 vs 자동 빈 등록 만약 수동 빈 등록과 자동 빈 등록에서 빈 이름이 충돌 되면 어떻게 될까? 이 경우 수동 빈 등록이 우선권을 가진다. (수동 빈이 자동 빈을 오버라이딩 해버린다) Overriding bean definition for bean 'memoryMemberRepository' with a different definition: replaci..
탐색할 패키지와 시작 위치 지정 모든 자바 클래스를 다 컴포넌트로 스캔 하면 시간이 오래 걸린다 (라이브러리 까지 뒤진다). 그래서 꼭 필요한 위치부터 탐색하도록 시작 위치를 지정할 수 있다. AutoAppConfig.java @Configuration @ComponentScan( // @Component를 찾아 스프링 빈으로 등록해준다. // 기본 스캔 범위를 정할 수 있다. basePackages = "hello.core.member", // 기존 AppConfig.java는 등록이 되면 안되기 때문에 // @Component 어노테이션을 찾을 때 제외할 어노테이션 (@Configuration) excludeFilters = @ComponentScan.Filter(type = FilterType.AN..
지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean 이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. 스프링 빈이 수십 , 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커지고 , 누락하는 문제도 발생한다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또 의존관계도 자동으로 주입하는 @Autowired라는 기능도 제공한다. AutoAppConfig.java @Configuration @ComponentScan( // @Component를 찾아 스프링 빈으로 등록해준다. // 기존 AppConfig.java는 등록이 되면 안되기 때문에 // @Component 어노테이션을 찾을 때 제외할 어노테이션 (@Conf..
스프링 핵심 원리/컴포넌트 스캔 2020. 12. 27. 21:18
컴포넌트 스캔에서 같은 빈 이름을 등록하면 어떻게 될까? 자동 빈 등록 vs 자동 빈 등록 수동 빈 등록 vs 자동 빈 등록 자동 빈 등록 vs 자동 빈 등록 컴포넌트 스캔에 의해 자동으로 스프링 빈이 등록되는데 , 그 이름이 같은 경우 스프링은 오류를 발생 시킨다. ConflictingBeanDefinitionException 예외 발생 수동 빈 등록 vs 자동 빈 등록 만약 수동 빈 등록과 자동 빈 등록에서 빈 이름이 충돌 되면 어떻게 될까? 이 경우 수동 빈 등록이 우선권을 가진다. (수동 빈이 자동 빈을 오버라이딩 해버린다) Overriding bean definition for bean 'memoryMemberRepository' with a different definition: replaci..
스프링 핵심 원리/컴포넌트 스캔 2020. 12. 27. 20:56
includeFilters : 컴포넌트 스캔 대상을 추가로 지정한다. excludeFilters : 컴포넌트 스캔에서 제외할 대상을 지정한다. MyIncludeComponent , MyExcludeComponent (Annotation) @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyIncludeComponent { } @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface MyExcludeComponent { } BeanA , BeanB @MyIncludeComponent p..
스프링 핵심 원리/컴포넌트 스캔 2020. 12. 27. 20:16
탐색할 패키지와 시작 위치 지정 모든 자바 클래스를 다 컴포넌트로 스캔 하면 시간이 오래 걸린다 (라이브러리 까지 뒤진다). 그래서 꼭 필요한 위치부터 탐색하도록 시작 위치를 지정할 수 있다. AutoAppConfig.java @Configuration @ComponentScan( // @Component를 찾아 스프링 빈으로 등록해준다. // 기본 스캔 범위를 정할 수 있다. basePackages = "hello.core.member", // 기존 AppConfig.java는 등록이 되면 안되기 때문에 // @Component 어노테이션을 찾을 때 제외할 어노테이션 (@Configuration) excludeFilters = @ComponentScan.Filter(type = FilterType.AN..
스프링 핵심 원리/컴포넌트 스캔 2020. 12. 27. 19:46
지금까지 스프링 빈을 등록할 때는 자바 코드의 @Bean 이나 XML의 등을 통해서 설정 정보에 직접 등록할 스프링 빈을 나열했다. 스프링 빈이 수십 , 수백개가 되면 일일이 등록하기도 귀찮고, 설정 정보도 커지고 , 누락하는 문제도 발생한다. 그래서 스프링은 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔이라는 기능을 제공한다. 또 의존관계도 자동으로 주입하는 @Autowired라는 기능도 제공한다. AutoAppConfig.java @Configuration @ComponentScan( // @Component를 찾아 스프링 빈으로 등록해준다. // 기존 AppConfig.java는 등록이 되면 안되기 때문에 // @Component 어노테이션을 찾을 때 제외할 어노테이션 (@Conf..