对象注入 BeanFactory 的操作 BeanFactoryPostProcessor , Spring boot
先看代码
package biz.baijing.processor;import ...@Component
public class BaiJingBeanFactoryPostProcessor implements BeanFactoryPostProcessor {/*-1- beanFactory实例化后,-2- bean创建之前回调 . postProcessBeanFactory ,注册 BeanDefinition*/@Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {// 注册一个 BaiJing 的 BeanDefinitionGenericBeanDefinition genBD = new GenericBeanDefinition();genBD.setBeanClass(BaijingDef.class);// public class DefaultListableBeanFactory extends AbstractAutowireCapableBeanFactory implements ConfigurableListableBeanFactory, BeanDefinitionRegistry, Serializable {// 强转DefaultListableBeanFactory defBF = (DefaultListableBeanFactory) beanFactory;// 完成注册defBF.registerBeanDefinition("baijingDef", genBD);}
}
输出结果
package biz.baijing;import ...@SpringBootApplication
public class BizBaiJingApplication
{public static void main( String[] args )ConfigurableApplicationContext run = SpringApplication.run(BizBaiJingApplication.class, args);System.out.println(run.getBean("baijingDef"));}
}
结果
biz.baijing.processor.BaijingDef@794366a5
关于 BaijingDef
package biz.baijing.processor;// 这个类并没有注解,是「Manual」注入
public class BaijingDef {
}
ConfigurationClassPostProcessor | 扫描启动类所在包下注解 |
ServletComponentRegisteringPostProcessor | 扫描 @WebServlet @WebFilter @WebListener |
CachingMetadataReaderFactoryPostProcessor | 配置 ConfigurationClassPostProcessor |
ConfigurationWarningsPostProcessor | 配置警告通知 |