Spring揭秘
?
Spring两种容器类型:BeanFactory和ApplicationContext;BeanFactory启动速度快,所需资源少
?
BeanFactory(ListableBeanFactory,HierarchicalBeanFacotry)
ApplicationContext(ListableBeanFactory,HierarchicalBeanFacotry,ApplicationEventPublisher
,ResourcePatternResolver,MessageSource)
?
bean的scope类型:singleton和prototype;singleton同一个容器只存在一个共享实例,prototype每一个对象都会创建实例
?
容器功能实现的各个阶段:启动阶段(加载配置,分析配置信息,装配到BeanDefinition和其他后处理)和Bean实例化阶段(实例化对象,装配依赖,生命周期回调,对象其他处理,注册回调接口);
?
Bean实例化的过程:实例化Bean对象,设置对象属性,检查Aware相关接口并设置相关依赖,BeanPostProcessor前置处理,检查是否是InitializingBean以决定是否调用afterPropertiesSet方法,检查是否配置有自定义的init-method,BeanPostProcessor后置处理,注册必要的Destruction相关回调接口,使用中,是否实现DisposableBean接口,是否配置有定义的destroy方法
?
?
Spring提出了一套基于Resource和ResourceLoader的资源抽象和加载策略,ApplicationContext就是对此的支持
?
?
aop起初是针对像日志,安全等问题系统需求中横切的关注点
Aspect最终是一Class的身份与系统结合的
Joinpoint,Pointcut,Advice,Aspect
Java的异常类(java.lang.Throwable(java.lang.Error;java.lang.Exception(java.lang.RuntimeException,NotRuntimeException)))