Spring框架:IOC和AOP理解

前言

Guide的文章面试被问了几百遍的 IoC 和 AOP ,还在傻傻搞不清楚?写的很容易理解,根据他的思路总结一下.

1. IOC理解

在Spring中我们经常提到的IOC并不是一个技术实现,而是一种设计理念.描述的是:Java 开发领域对象的创建以及管理的问题。

1.1 定义

IOC(Inversion of control)叫做控制反转.

控制:是指对象的创建和管理的权利.
反转:将这种权利交给外部环境(框架或容器).

1.2 优势
  • IOC减少了对象之间的耦合度(不需要我们自己在一个类里面写创建另外类的方法)
  • 资源容易管理.(很容易维护一个单例对象)
1.3 DI

DI(Dependency Injection)就是依赖注入,是控制反转思想在Spring中实现.大致说下原理,

  • 首先创建IOC容器ApplicationContext(区别于BeanFactory容器),
  • 根据XML元数据创建Bean放置到IOC容器中的Map中
    • 如果Bean出现相互依赖的情况时,优先创建被依赖的Bean
    • 如果出现循环依赖的情况,先调用无参的构造方法创建对象,然后将对象存储在三级缓存中,然后调用set赋值,来解决循环依赖.
  • 当然也可以通过注解实现Bean的创建,被注解Component修饰,这个类就会被创建为Bean并被托管.scope修改bean的作用范围.
  • 然后每次请求容器的时候,根据Bean的名字或者类型实现注入.

2. AOP的理解

AOP(Aspect oriented programming)面向切面编程式OOP面向对象编程的延续.

2.1 AOP的理解

AOP 为什么叫面向切面编程
切 :指的是横切逻辑,原有业务逻辑代码不动,只能操作横切逻辑代码,所以面向横切逻辑
面 :横切逻辑代码往往要影响的是很多个方法,每个方法如同一个点,多个点构成一个面。这里有一个面的概念

在Java中通过继承来实现去除重复代码,实现垂直纵向精简.但是在同一类中的不同方法也可能存在大量的重复逻辑,可以理解为横向代码重复.所有这些重复的代码可以成为一个个的点,无数的点汇聚成一个面.所以需要将这些重复的代码单独取出来.横向的重复代码的场景有:日志,权限校验,事务控制.

2.2 AOP的优势

AOP可以在不改变原有业务逻辑的情况下,提出横切逻辑代码,根本上解耦合,避免横切逻辑代码重复。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝多芬也爱敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值