对Spring的IoC和AOP的理解

我们在使用Spring框架的过程中,其实就是为了使用它的控制反转(IoC)和面向切面(AOP),那么何为控制反转(IoC)和面向切面(AOP)呢?

一、Spring 的 IoC 

1、IoC 概念
(1)Inverse of Controller 被称为控制反转。意思是程序中的之间的关系,不用代码控制,而完全是由容器来控制。在运行阶段,容器会根据配置信息直接把他们的关系注入到组件中。
(2)所谓的控制指的是负责对象关系的实例化、对象创建、初始化和销毁等逻辑。
(3)IoC 指的是将控制逻辑交给第三方框架或容器负责(即把 Action 中的控制逻辑提出来,交给第三方负责),当两个组件关系发生改变时,只需要修改框架或容器的配置即可。
(4)IoC 主要解决的是两个组件对象调用问题,可以以低耦合方式建立使用关系。

2、DI 概念
(1) Dependency Injection 依赖注入。
(2) Spring 框架采用 DI 技术实现了 IoC。
(3) Spring 提供了两种形式的注入方法:
①setter 方式注入:依靠 set 方法,将组件对象传入(可注入多个对象)。
A.首先添加属性变量和 set 方法。
B.在该组件的<bean>定义中使用如下描述:
 <property name="属性名" ref="要注入的 Bean 对象的 id 值"></property>
②构造方式注入:依靠构造方法,将组件对象传入。
A.在需要注入的组件中,添加带参数的构造方法。
B.在该组件的<bean>定义中,使用如下描述:
 <constructor-arg index="参数索引 " ref="要注入的 Bean 对象的 id 值"></constructor-arg>

二、Spring的AOP

1、AOP概念

Aspect Oriented Programming,被称为面向切面编程。面向切面编程的思想是在执行业务前后执行另外的代码,使程序更加灵活、扩展性更好,可以随意的添加和删除某些功能。如,拦截器等。

2、AOP 相关术语
(1)切面( Aspect):指的是封装了共通处理的功能组件。该组件可以作用到某一批目标组件的方法上。
(2)连接点( JoinPoint):指的是方面组件和具体的哪一个目标组件的方法有关系。
(3)切入点( Pointcut):用于指定目标组件的表达式。指的是方面组件和哪一批目标组件方法有关系。多个连接点组成的集合就是切入点。
(4)通知( Advice):用于指定方面组件和目标组件方法之间的作用时机。例如:先执行方面组件再执行目标方法;或先执行目标方法再执行方面组件。
(5)目标(Target):利用切入点指定的组件和方法。
(6)动态代理(AutoProxy): Spring 同样采用了动态代理技术实现了 AOP 机制。当使用AOP 之后,从容器 getBean()获取的目标组件,返回的是一个动态生成的代理类。然后通过代理类执行业务方法,代理类负责调用方面组件功能和原目标组件功能。
Spring 提供了下面两种动态代理技术实现:
①采用 CGLIB 技术实现(目标组件没有接口采用此方法)
public class 代理类 extends 原目标类型 { }
TestAction action=new 代理类();//代理类中有原来类的方法
②采用 JDK Proxy API 实现(目标组件有接口采用此方法,即实现了某个接口)
Public class 代理类 implements 原目标接口 { }
TestDAO testDAO=new 代理类();//代理类去实现了原目标接口,所以没有原来类的方法



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值