前言
Spring Boot Web 使用的 IoC 实现类为 AnnotationConfigServletWebServerApplicationContext ,该类继承了 ServletWebServerApplicationContext 并重写了 postProcessBeanFactory() 方法。
postProcessBeanFactory() 方法
AnnotationConfigServletWebServerApplicationContext#postProcessBeanFactory
@Override
protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {
// 直接调用父类方法
super.postProcessBeanFactory(beanFactory);
// 加载指定的basePackages
if (this.basePackages != null && this.basePackages.length > 0) {
this.scanner.scan(this.basePackages);
}
// 注册符合条件的类
if (!this.annotatedClasses.isEmpty()) {
this.reader.register(ClassUtils.toClassArray(this.annotatedClasses));
}
}
postProcessBeanFactory() 方法
ServletWebServerApplicationContext#postProcessBeanFactory
@Override
protected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) {
// WebApplicationContextServletContextAwareProcessor 用于向
// 实现了 ServletContextAware 接口的 Bean 注入 ServletContext
// 或实现了 ServletConfigAware 接口的 Bean 注入 ServletConfig
beanFactory.addBeanPostProcessor(new WebApplicationContextServletContextAwareProcessor(this));
beanFactory.ignoreDependencyInterface(ServletContextAware.class);
// 注册 Web 类型的 Scopes。默认两种:request、session
registerWebApplicationScopes();
}
本文由 Administrator 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站部分文章采集自互联网,因某些原因未注明出处,如有侵权,请留言告知。