09-Spring图解
1. Spring加载配置文件
- internalConfigurationAnnotationProcessor =>
ConfigurationClassPostProcessor
- internalAutowiredAnnotationProcessor =>
AutowiredAnnotationBeanPostProcessor
- internalCommonAnnotationProcessor =>
CommonAnnotationBeanPostProcessor
- internalEventListenerProcessor =>
EventListenerMethodProcessor
- internalEventListenerFactory =>
DefaultEventListenerFactory
- internalAutoProxyCreator =>
AspectJAwareAdvisorAutoProxyCreator
2. 执行BFPP
3. ConfigurationClassPostProcessor
4. registerBPP
1. 常用BPP
- ApplicationContextAwareProcessor
- ApplicationListenerDetector
- AutowiredAnnotationBeanPostProcessor =>
@Autowired, @Value
- CommonAnnotationBeanPostProcessor =>
@Resource
- InitDestroyAnnotationBeanPostProcessor =>
@PostConstruct, @PreDestroy
- AbstractAutoProxyCreator => AspectJAwareAdvisorAutoProxyCreator =>
AOP
5. populateBean
6. AOP
7. TX
8. Design_pattern
把整个流程框架梳理清楚之后,设计模式自然而然就体会到了,模仿源码
- 责任链:使用AOP在进行通知调用
- 工厂模式:
BeanFactory, proxyFactory
- 适配器模式:通知Adapter,
AdvisorAdapter
- 代理模式:使用
cglib, jdk
进行动态代理 - 模板方法:
postProcessBeanFactory(), onRefresh(), initPropertySources()
- 观察者模式:监听器、监听事件、广播器(多播器)
- 单例模式:Spring中所有的bean对象默认都是单例的
- 原型模式:可以通过作用域的方式来改变bean为prototype
- 策略模式:
ClassPathXmlApplicationContext
FileSystemApplicationContext
XmlBeanDefinitionReader
PropertiesBeanDefinitionReader
- 实例化策略(simple, cglib)
- 构建者模式:
BeanDefinitionBuilder
- 访问者模式:
BeanDefinitionVisitor
- 装饰者模式:
BeanWrapper
- 委托者模式:
BeanDefinitionParserDelegate