Spring 시리즈는 혼자 공부하며 기록으로 남기고, 만약 잘못 학습 한 지식이 있다면 공유하며 피드백을 받고자 작성합니다.
스프링에 대해 깊게 공부해보고자 인프런의 김영한 강사님께서 강의를 진행하시는 (스프링 핵심 원리 - 기본편) 강의를 수강하며 정리하는 글입니다.
혹여나 글을 읽으시며 잘못 설명된 부분이 있다면 지적 부탁드리겠습니다.
@Autowired 애노테이션을 사용할때 가졌던 의문점이 있다.ConflictingBeanDefinitionException 발생MemberServiceImpl, OrderServiceImpl의 @Component애노테이션에 "service" 라는 이름을 추가해서 실행시켜보면 예외가 발생한다.@Component("service")
public class OrderServiceImpl implements OrderService {}
@Component("service")
public class MemberServiceImpl implements MemberService {}
@Component
public class MemoryMemberRepository implements MemberRepository {}
@Configuration
@ComponentScan(
excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig {
@Bean(name = "memoryMemberRepository")
MemberRepository memberRepository() {
return new MemoryMemberRepository();
}
}
Overriding bean definition for bean 'memoryMemberRepository' with a different definition: replacing그럼 스프링에서는 버그를 어떻게 해결하는데?
CoreApplication을 실행해보자The bean 'memoryMemberRepository', defined in class path resourceapplication.properties에 다음과 같은 내용을 추가하자spring.main.allow-bean-definition-overriding=true