Note ≣ | 이 예제에서는 @ComponentScan 애너테이션의 basePackages 속성을 사용한다. 스프링은 @ComponentScan 애너테이션의 basePackageClasses 속성으로 클래스를 직접 지정할 수 있는 기능도 제공한다. 패키지를 정의할 때 장점은 패키지 이름만 언급하면 된다는 것이다. 즉, 패키지에 컴포넌트 클래스 20개가 포함되었다면 20개 대신 한 줄(패키지 이름)만 작성하면 된다. 단점은 개발자가 패키지 이름을 변경할 때 @ComponentScan 애너테이션 값도 변경해야 한다는 사실을 깜빡할 수 있다는 것이다. 클래스를 직접 언급하면 코드를 더 많이 작성해야 할 수 있지만, 코드를 변경할 때 @ComponentScan 애너테이션도 수정해야 한다는 사실을 즉시 알 수 있다. 수정하지 않는다면 앱이 컴파일되지 않기 때문이다. 프로덕션 애플리케이션에서는 두 가지 방법을 모두 사용할 수 있으며, 필자의 경험상 어느 방법이 다른 방법보다 더 낫다고 말하기는 어렵다.