Spring设计理念及设计模式分析
spring骨骼架构:context,bean,core
把对象之间的依赖用配置文件来管理,也就是依赖注入的机制,而这个注入关系在一个IOC的容器来管理,IOC中就是很多被Bean包裹的对象,spring正是通过把对象包装在bean中从而达到管理这些对象。
如果Bean是演员,context就是舞台背景,core就是道具
context:就是一个Bean关系的集合,就是发现每个bean的关系,为他们建立并维护好这种关系,就是一个Bean关系的集合,这个关系的集合又叫IOC容器,一旦建立这个容器,spring就可以为你工作了
core:就是一系列工具,发现,建立和维护每个bean之间的关系。定义了资源的访问方式,这种把所有资源抽象成一个接口的方式很值得学习。
1.IOC容器如何工作?
创建beanfactory工厂:1)构建beanfactory2)注册可能感兴趣的事件3)创建bean实例对象4)触发被监听的事件
如何创建bean的实例并构建bean关系网:有一个非常重要的bean-factorybean,spring有一大半扩展功能与这相关,这是个特殊的bean,他是个工厂bean,可以产出bean的bean。
spring核心:如何创建Bean的实例以及如何构建Bean实例对象之间的关联。
IOC容器的扩展点:BeanFactory就是那个造球模的工具,球模就是Bean,BeanFactoryPostProcessor在球模在造出来的时候可有机会对其适当的修改,而BeanPostProcesssor可以让你对球模造出来的球做出适当修正,最后还有一个神奇的FactoryBean是一个神奇的球模,由你来确定它的形状。
IOC容器如何为我所用:AOP的实现就是spring本身实现了扩展点达到了它想要的特性功能,ApplicationContext.xml就是IOC的默认配置文件,Spring的所有特性功能全部都是基于IOC容器工作的。
Spring的AOP原理:首先必须了解动态代理,因为AOP就是在动态代理的基础上实现的
代理的目的是调用目标方法可以转而执行InvocationHandler类的invoke方法,所以如何在InvocationHandler上做文章就是Spring实现AOP的关键所在。
动态代理根本不需要知道代理类的名字,静态需要