
저번에 구현했던 간단한 DI Container에서는 주입해야하는 빈의 후보가 2개 이상일 경우 모호해 결국에는 에러가 발생하는 문제가 있었다. 이번에는 이러한 문제를 해결하기 위해 Spring에서 사용하는 `@Primary`를 적용시켜 주입해야할 빈 후보가 2개 이상인 상황에서 주입해야 할 빈을 지정할 수 있도록 해볼 것이다. @Primary?먼저 문제가 없는 상황을 먼저 보자.@Component public class FooService { private FooRepository fooRepository; @Autowired public FooService(FooRepository fooRepository) { this.fooRepository = fooReposit..

스프링을 사용하면서 우리는 (다양한 방법이 있지만)빈으로 등록할 클래스에 `@Component`, `@Controller`, `@Service`, `@Repository` 등의 어노테이션을 적용해 스프링에게 알려준다. 그럼 스프링은 시작할 때 해당 어노테이션이 달려있는 클래스를 찾아 인스턴스를 생성해 빈으로 만들고 관리하게 된다. 여기서 문득, 저런 어노테이션이 달려있는 클래스를 어떻게 알고 찾으며 어떻게 인스턴스를 생성하는걸까? 하는 궁금증이 들었다. 이러한 궁금증을 해결하기 위해 ChatGPT에게 물어봤고 대답은 여러 기술이 사용되지만 이 중 핵심이 되는 것은 ClasspathScan과 Reflection이다.ClasspathScan : 자바에서 특정 패키지나 경로에서 클래스를 탐색하는 과정Refle..