通常springboot项目中经常会出现用@Import修饰的类,然后在Import注解中,又需要存在一个class类型的常量。
首先它的调用流程是这样的,看名字就知道这是对bean进行增删改查用的,在容器启动中,会逐步调用直到运行至org.springframework.context.annotation.ConfigurationClassPostProcessor#processConfigBeanDefinitions中this.reader.loadBeanDefinitions(configClasses)
org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader#loadBeanDefinitionsFromRegistrars
会将用@Import修饰的类作为metaData,而作为注解常量的class必须是ImportBeanDefinitionRegistrar的实现类才会被调用它的registerBeanDefinitions 方法。在此方法中,也可以对Bean进行增删改查,相对控制更为灵活,缺点就是对代码有侵入性,在这点不及SPI
作用:对spring进行扩展,加入第三方组件
