Spring(1)--IOC和AOP原理

1、BeanFactory

----getBean取得IOC容器中管理的Bean

----Bean的取得是通过指定名字来索引的

 

2、使用IOC容器时,需要几个步骤

----创建IOC配置文件的抽象资源,这个抽象资源包含了BeanDefinition的定义信息

----创建BeanFactory

----创建一个载入BeanDefinition的读取器

这里使XmlBeanDefinitionReader来载入xml文件形式的BeanDefinition,通过一个回调配置给BeanFactory

----从定义好的资源位置读取配置信息,具体的解析过程由xmlBeanDefinitionReader来完成,完成整个载入和注册bean定义之后,需要的IOC容器就建立起来了

 

3、IOC容器的初始化三个步骤

----Resource定位

----载入:把用户定义好的bean表示成IOC容器

----注册:通过BeanDefinitionRegistry接口实现,在IOC容器内部将BeanDefinition注册到一个HashMap中,IOC容器就是通过这个HashMap来持有这些BeanDefinition数据的

 

4、注入

另一个过程是依赖注入,主要是取得setter的方法,反射。

依赖注入发生在应用第一次向容器索要bean时,向容器索要bean是通过getBean的调用来完成的,可通过设置bean的lazy-init来预实例化初始化时完成bean的依赖注入。

 

5、IOC容器中bean的生命周期

----bean实例的创建

----为bean实例设置属性

----调用bean的初始化方法

----应用可以通过IOC容器使用bean

----当容器关闭时,调用bean的销毁方法

 

6、afterProperties

在调用bean的初始化方法之前,会先启用afterPropertiesSet的过程,需要bean实现InitializingBean的接口。

 

7、BeanPostProcessor

这个bean的后置处理器是一个监听器,监听容器触发的事件,将它向IOC容器注册后,容器中管理的bean具备了接收了IOC容器事件回调的能力。

实现方法:实现接口类BeanPostProcessor

然后设置到xml的bean配置文件中,该接口类有两个接口方法,一前一后

postProcessBeforeInitialization   init-method方法

bean初始化之前提供回调入口

postProcessAfterInitialization

bean初始化之后提供回调入口

 

8、在完成bean的生成和依赖注入以后,开始对bean进行初始化,这个初始化包括了对后置处理器postProcessBean的回调

 

9、依赖注入的方式

setter

autowiring (autowire-by-name、autowire-by-type)

 

10、AOP

基础+切面+配置

基础:初为待增强对象或者目标对象

切面:通常包含对于基础的增强应用

配置:可看成一种编织

advice

--BeforeAdvice before方法

--AfterAdvice afterReturning

--ThrowsAdvice 没有指定需要实现的接口方法,抛出异常时被回调,afterThrowing

pointCut

决定advice通知应该作用于哪个连接点,哪个方法或哪些方法

advisor通知器

结合advice和pointcut

定义:使用哪个通知,并在哪个关注点使用它

动态代理

java动态代理

cglib

 

posted @ 2018-01-20 02:44  海东青Lo  阅读(123)  评论(0编辑  收藏  举报