转自 https://blog.csdn.net/qq_38006047/article/details/80797386

1,理解“控制反转”

控制反转,也叫依赖注入,是面向对象编程中的一种设计理念,用来降低程序代码之间的耦合度。

程序的耦合:调用者与被调用者的依赖关系。

比如:程序员A负责编写A类,程序员B负责B类开发,A类的某些功能需要是梨花B类的对象调用其方法才能完成,那么A类就依赖B类,如果程序员B不写B类 难道程序员A要一直等下去?

企业开发的原则:“编译时不依赖,运行时才依赖”

// 所谓的A类依赖B类
public class PersonServiceBean{
private PersonDao personDao=new PersonDaoBean(); public void save(Person person){
personDao.save(person);
}
}

PersonDaoBean是在应用内部创建及维护的。

所谓“控制反转”就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓的反转。

2,依赖注入

当我们把依赖对象交给外部容器负责创建,那么PersonServiceBean类就可以改成:

public class PersonServiceBean{
private PersonDao personDao;
// 通过构造参数,让容器把创建好的依赖对象注入进PersonServiceBean,当然也可以使用setter方法进行注入
public PersonServiceBean(PersonDao personDao ){
this.personDao=personDao ; }
public void save(Person person){
personDao.save(person);
}
}

所谓依赖注入是指:在运行期,由外部容器动态地将依赖对象注入到组件中。

Spring AOP

理解“面向切面编程”

比如在两个类中,可能都需要在每个方法中记录日志。按照面向对象的设计方法,我们就必须在两个日志的内容。也许他们是完全相同的,但就是因为面向对象的设计让类与类之间无法联系,而不能将这写重复的代码统一起来。

  也许会有人说,那好办啊,我们可以将这段代码写在一个独立的类中独立的方法里,然后再在这两个类中调用。但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了,它的改变会影响这两个类。那么,有没有什么办法,能让我们在需要的时候,随意地加入代码呢?

这种在运行时,动态地将代码切入到类的制定方法、指定位置上的编程思想就是面向切面编程。

简单地说就是不改变原程序的基础上为代码增加新的功能,对代码进行增强处理。

常用增强处理类型:

IOC与AOP的理解的更多相关文章

  1. Spring 的 IOC 和 AOP 的理解

    Spring 的 IOC 和 AOP 的理解: https://www.jianshu.com/p/bf1adc3b75e6 对Spring的核心(AOP和IOC)的理解(大白话) https://w ...

  2. Spring中IOC和AOP的理解

    IOC和AOP是Spring的核心 IOC:控制反转:将创建对象以及维护对象之间的关系由代码交给了spring容器进行管理,也就是创建对象的方式反转了,交由spring容器进行管理. DI:依赖注入: ...

  3. 对Spring IOC和AOP的理解

    控制反转(IOC)是什么?(理解好Ioc的关键是要明确"谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了") 1.Ioc-Inversion of Contr ...

  4. spring ioc和aop的理解

    IOC,依赖倒置的意思,所谓依赖,从程序的角度看,就是比如A要调用B的方法,那么A就依赖于B,反正A要用到B,则A依赖于B.所谓倒置,你必须理解如果不倒置,会怎么着,因为A必须要有B,才可以调用B,如 ...

  5. Spring的IoC与AOP的理解

    1.Spring它到底是什么? Spring是一个开源的Java应用程序开发框架,为了解决企业应用开发的复杂性而创建的.   在spring中,它会认为一切Java类都是资源,而资源就是Bean,容纳 ...

  6. 对spring中IOC和AOP的理解

    IOC:控制反转也叫依赖注入.利用了工厂模式. 为了方便理解,分解成每条以便记忆.  1.将对象交给容器管理,你只需要在spring配置文件总配置相应的bean,以及设置相关的属性,让spring容器 ...

  7. ioc和aop的理解(Spring就是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。)

    IoC,(Inverse of Control)控制反转,其包含两个内容:其一是控制,其二是反转.在程序中,被调用类的选择控制权从调用它的类中移除,转交给第三方裁决.这个第三方指的就是Spring的容 ...

  8. Spring ioc与aop的理解

    一 spring的特点 1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦 2.可以使用容易提供的众多服务,如事务管理,消息服务等 3.容器提供单例模式支持 4.容器提供了AOP技术,利用它很容易 ...

  9. Spring ioc,aop的理解

    什么是控制反转? 控制反转是一种将组件依赖关系的创建和管理置于程序外部的技术. 由容器控制程序之间的关系,而不是由代码直接控制 由于控制权由代码转向了容器,所以称为反转 依赖注入,作用是避免手工在各代 ...

随机推荐

  1. 八十四、SAP中的ALV创建之三,创建ALV表格

    一.销售表是2个表,一个抬头表,一个是销售内容表,数据库查询语句如下, 二.我们添加相关LAYOUT的格式控制如下 三.需要报每个字段都用相应的LAYOUT控制一下 四.点击模式,在模式里面,添加RE ...

  2. 130-PHP子类通过类函数访问父类protected修饰的类成员

    <?php class father{ //定义father类 //定义protected修饰的成员属性和方法 protected $money=1000000; protected funct ...

  3. SpringBoot学习(五)——Profile

    Profile是Spring对不同环境(例如开发人用开发环境,测试人员用测试环境)提供不同配置功能的支持,可以通过激活,指定参数等方式快速切换环境 1.多profile文件形式 格式:applicat ...

  4. springMvc接收json和返回json对象

    导入三个包 页面: function sendJson(){ //请求json响应json $.ajax({ type:"post", url: "${pageConte ...

  5. Day 17:缓冲输出字符流和用缓冲输入输出实现登录、装饰者设计模式

    输出字符流 Writer  所有输出字符流的基类,  抽象类. FileWriter 向文件输出字符数据的输出字符流. BufferedWriter 缓冲输出字符流        缓冲输出字符流作用: ...

  6. C语言拾遗——inttypes.h

    今天偶然间看到这个头文件inttypes,好奇有什么用,去找度娘玩了一波,发现这头文件挺有意思的. 这个头文件适配于C99标准,它提供整数输入的各种进制转换的宏,这是在Ubuntu上扣下来的代码(wi ...

  7. css文本强制两行超出就显示省略号,不显示省略号

    1. 强制一行的情况很简单 overflow:hidden; //超出的隐藏 text-overflow:ellipsis; //省略号 white-space:nowrap; //强制一行显示 2. ...

  8. App_显示图表内容

    今天在之前记账本的基础上增加了图标的显示功能,在本次课程中它以折线图为例讲述.但是课程中给出了多有图的代码案例. https://github.com/lecho/hellocharts-androi ...

  9. Express ~ 获取表单 get 和 post 提交方式传送参数的对比

      一,获取 get 提交的参数   var id = req.query.id || ''   二,获取 post 提交的参数 var name = req.body.name || ''

  10. ROS常见问题(一) 安装ROS时sudo rosdep init指令报错 最全解决方法

    安装ROS时sudo rosdep init指令报错: ERROR: cannot download default sources list from: https://raw.githubuser ...