看spring也有些日子了,总想总结一下看过的东西, 这几天又把前面一些东西看了一遍,这次好好总结一下了。
Spring 的核心是 Ioc容器,所有的模块都是基于这个容器来实现的。这也是spring架构图中的核心,它为Spring提供的其它的 AOP DAO ORM Web MVC Context 模块 得于实现的基础。 Spring IOC 主要提供setter getter模式和construct 来实现依赖注入。
IoC : 控制反转,又称为依赖注入。 主要是目的是高层的模块不依赖低层的实现模块,从而实现高层模块的重用。实现IoC有两种方式:Dependency Injection and Service Locator. Spring use the Dependency Injection implement the IoC. Dependency Injection means : "remain the abstract interface, the Component implement the interface,when the Component should use the concrete object ,you can use the interface to injection the increte class." 实现依赖注入有三种方式,spring提供了setter getter模式和construct方式,并且推荐使用setter 模式。
IoC的核心就是通过使用接口来降低对象之间的耦合度,使组件能够得到重用。 Spring IoC容器通过BeanFactory和ApplicationContext这两个接口来实现将具体的组件和应用程序隔离。应用程序只要通过BeanFactory 和ApplicationContext 可以使用具体的组件。BeanFactory 实际上是一个抽象工厂方法,ApplicationContext 是它的一个子接口,它们的主要作用是通过读配置文件来实例化,配置以及管理Bean。
Bean的生命周期: 1. 定义JavaBean 2. 初始化JavaBean 3.使用JavaBean 4. 销毁JavaBean。
分得更细一点有以下几个执行阶段:1.Bean 建立 . 由BeanFactory读取Bean定义文件,生成各个Bean的实例。 2. 属性注入: 执行相关的Bean 属性依赖注入。 3. BeanNameAware 的 setBeanName() 存在时才执行。 4. BeanFactory 的setBeanFactory() 5. BeanPostProcessors 的 processBeforeInitialization() 6. initializingBean 的afterPropertiesSet() 7. Bean定义文件中的定义init-method 8. BeanPostProcessors 的processAfterInitialization() 8. DisposableBean 的destroy 9. Bean 定义文件中的 destory-method。
BeanPostProcessor用于在bean的依赖关系建立后对Bean进行修正操作来修改相关属性。
BeanFactoryPostProcessor 用于在加载Bean定义文件但是还没产生Bean实例前,针对该BeanFactory进行一些处理。
用户可以对ApplicationContext的事件进行监听,以做一些处理。
BeanFactory 通常只用于内存受限的场合,在大部分场合应该用ApplicationContext。