JavaEE第二篇 Spring AOP框架和IoC容器

一,Spring的IoC容器


IoC叫控制反转,DI叫依赖注入,是对IoC更简单的实现方法。
控制反转是把传统上由程序代码直接操控的对象调用权交给容器,通过容器来实现对象组件的装配和管理。
所谓控制反转就是对组件对象控制权的转移,从程序代码本身转移到外部容器,由容器创建并管理对象之间的依赖关系。

DI是IOC更准确的描述,即组件之间的依赖关系在运行期决定,形象来说即由容器动态的将某种依赖关系注入到组件中。
举个例子:一个类A需要用到接口B中的方法,那么就需要为类A和接口B建立关联或依赖关系,最原始的方法是在类A中创建一个接口B的实现类C的实例,但这种方法需要维护依赖关系。如果通过一个容器管理这些对象以及对象的依赖关系,则只需要在类A中定义好用于关联接口B的方法(构造器或setter方法),将实现类C放到容器中,通过配置容器实现二者关联。
IoC实现原理:
通过反射创建实例;获取需要注入的接口实现类并赋值给该接口

IOC的加载过程:
1. 创建IOC配置文件的抽象资源,这个抽象资源包含了BeanDefinition的定义信息
2. 创建一个BeanFactory
3. 创建一个载入BeanDefinition的读取器,把读取配置信息的BeanDefinitionReader配置给BeanFactory
4. 从定义好的资源位置读入配置信息,具体的解析过程由XmlBeanDefinitionReader完成,载入Bean定义

BeanDefinition的定位: Spring使用Resource接口统一Bean的定义信息,定位由ResourceLoader来做。如果使用上下文,ApplicationContext本身提供定位功能。

二,Spring的AOP实现

AOP,面向切面编程(也叫面向方面):Aspect Oriented Programming(AOP),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,形成模块化,提高程序的可重用性,同时提高了开发的效率。

AOP是OOP的延续,是(Aspect Oriented Programming)的缩写,意思是面向切面(方面)编程。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。 主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。

AOP实现:
动态代理
JDK动态代理
cglib动态代理

JDK动态代理只能实现接口的类生成代理,而不能针对类,不需要第三方库。
CGLIB针对类实现代理,对指定的类采用继承的方式生成一个子类,依赖第三方库

猜你喜欢

转载自blog.csdn.net/wannuoge4766/article/details/88571403