@Component注解在Spring启动时被ClassPathScanningCandidateComponentProvider类扫描到,并作为候选组件加入待注册列表。
在后续的注册过程中,AnnotationBeanNameGenerator类负责生成Bean的名字,默认情况下它实现了将类名首字母小写的命名规则。如果类名连续两个首字母大写.则首字母不小写
//默认规则
com.xyz.FooServiceImpl -> fooServiceImpl
com.xyz.URLFooServiceImpl -> URLFooServiceImpl
如果用户没有自定义Bean的名称,则会调用这个生成器为具有@Component注解的类生成一个默认的Bean名称。