Spring Core

2019-07-19  本文已影响0人  金刀止戈

Spring 3.0之后集成Spring框架
web.xml

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

ContextLoaderListener实现ServletContextListener接口,在contextInitialized方法中完成Spring的加载

public void contextInitialized(ServletContextEvent event) {
    initWebApplicationContext(event.getServletContext());
}

其中主要逻辑都在子类contextInitialized中initWebApplicationContext方法中实现:

fresh方法

1. prepareRefresh
2. obtainFreshBeanFactory 建立BeanFactory,只有bean定义
3. prepareBeanFactory BeanFactory创建的前期准备
/** Map from dependency type to corresponding autowired value */
private final Map<Class<?>, Object> resolvableDependencies = new ConcurrentHashMap<>(16);
/** Helper class used in event publishing */
private ApplicationEventMulticaster applicationEventMulticaster;
/** Statically specified listeners */
private final Set<ApplicationListener<?>> applicationListeners = new LinkedHashSet<>();
<!-- 注解方式 -->
@Configuration
@EnableLoadTimeWeaving
public class AppConfig {}
<!-- xml配置方式-->
<beans>
    <context:load-time-weaver/>
</beans>
4. postProcessBeanFactory
5. invokeBeanFactoryPostProcessors
6. registerBeanPostProcessors
7. initMessageSource 初始化MessageSource,用于国际化,beanName:messageSource
8. initApplicationEventMulticaster 初始化event multicaster
9. onRefresh🚩模板方法,提供自定义加载扩展点
10. registerListeners
11. finishBeanFactoryInitialization
12.finishRefresh
上一篇 下一篇

猜你喜欢

热点阅读