자동 빈 등록으로, 같은 이름으로 등록을 시도할 경우 오류를 뱉는다.
BeanDefinitionStoreException
@Component
public class MemoryMemberRepository implements MemberRepository{
private static Map<Long, Member> store = new HashMap<>(); //Map, id랑 Member 객체 간이적으로 메모리에 저장
@Override
public void save(Member member) {
store.put(member.getId(), member);
}
@Override
public Member findById(Long memberId) {
return store.get(memberId);
}
}
자동 등록
public class AutoAppConfig {
@Bean(name = "memoryMemberRepository")
MemberRepository memberRepository(){
return new MemoryMemberRepository();
}
}
수동등록
이럴 경우는?
(참고로 빈은 이름으로 구분)
이 경우는, 수동으로 등록한 빈이 자동으로 등록된 빈을 오버라이드 해 버린다.
근데, 사실 상 이런 건 개발자의 실수가 대부분이기 때문에, 최근에는 스프링 부트가, (@SpringBootApplication 붙어있는) 제대로 실행하면 그건 오류를 뱉어낸다.
디폴트가 저거고, 만약 오버라이딩 되게끔 하고 싶다면..
application-properties에 옵션을 넣어주면 된다..
그것도 오류와 함께 어떻게 하면 되는지 뱉어 준다.
'스프링 > 1. 스프링 핵심 원리' 카테고리의 다른 글
34강. 의존관계 주입 옵션 (0) | 2023.07.22 |
---|---|
33강. 의존자 주입 방법들 (0) | 2023.07.22 |
31강. 필터 (0) | 2023.07.21 |
29강. 컴포넌트 스캔 (0) | 2023.07.20 |
28강. @Configuration가 싱글톤을 보장해주는 방식 (0) | 2023.07.20 |