Spring 的IoC和AOP

IOC和AOP

ioc和aop都是为了解耦

IOC:

IOC是Inversion of Control的缩写,翻译为:“控制反转”,把复杂系统分解成相互合作的对象,这些对象类通过封装以后,内部实现对外部是透明的,从而降低了解决问题的复杂度,而且可以灵活地被重用和扩展。

img

在传统的开发中 我们通常直接是在对象内部通过实例化来创建对象(new) 而IoC有一个专门的容器来创建这些对象,即将由ioc容器来控制对象的创建当我们需要一个接口的实现时,由它根据配置文件来决定到底给我们哪一个实现类,这样,我们就可以不用再关心我们要去使用哪一个实现类了,我们只需要关心,给到我的一定是一个可以正常使用的实现类我们就可以放心地让一个人去写视图层的代码,一个人去写业务层的代码

高内聚,低耦合,是现代软件的开发的设计目标,而Spring框架就给我们提供了这样的一个IoC容器进行对象的管理。

什么是控制反转

传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;
因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系,而Spring提供了IOC容器来帮我们生成所需要的对象。也就是说在我们原先的对象中有用到其他对象的地方Spring会帮我们来注入。不用我们再去考虑这些问题。

DI依赖注入

IoC是一种设计思想,DI是IoC 的一 种实现,DI是向类里面的参数设置值,不能单独存在,需要在IOC的基础上完成操作,只有把对象创建了,你才能向类里面注入值。

依赖注入(DI)更加准确地描述了IoC的设计理念, 即组件之间的依赖关系由容器在应用系统运行期来决定

Spring框架使用这种方式。依赖注入是时下最流行的IoC实现方式,分别有三种方式可以注入

  • 接口注入
  • 方法注入
  • 构造器注入

其中接口注入由于不好用在spring4的时候就废弃了

DI基本原则

应用组件不应该负责查找资源或者其他依赖的协作对象。配置对象的工作应 该由 IoC 容器负责,“查找资源”的逻辑应该从应用组件的代码中抽取出来,交给IoC容器负责,容器全权负责组件的装配它会把符合依赖关系的对象通过属性(JavaBean中的setter)或者是构造器传递给需 要的对象

AOP

AOP思想实际上就是:在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。也就是说,我们可以使用AOP来帮助我们在方法执行前或执行之后,做一些额外的操作,实际上,就是代理!

点击查看源网页

相当于我们的整个业务流程,被直接斩断,并在断掉的位置添加了一个额外的操作,再连接起来,也就是在一个切点位置插入内容。它的原理实际上就是通过动态代理机制实现的,我们在JavaWeb阶段已经给大家讲解过动态代理了。不过Spring底层并不是使用的JDK提供的动态代理,而是使用的第三方库实现,它能够以父类的形式代理,而不是接口。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值