IOC

一.IOC概述:

  一般指控制反转(inversion of Control),把创建对象的权利交给框架,Ioc容器控制对象,是框架的重要特征,并非是面向对象编程的专用术语。它包括依赖注入(DI)和依赖查找。是一种全新的设计模式,可以把它看做是工厂模式的升华,作为一个大工厂,这里面要生成的对象都是在xml文件中给出定义的,然后利用java的'反射(就是根据给出的类名来生成对象)'编程,根据xml中给出的类名生成相应对象。

二.Ioc优缺点:

  1).优点

    *灵活性。为广泛使用的接口更改实现类比较简单,更改给定的类检索策略,添加拦截器可以在同一地方完成;

    *可读性。代码更简洁,并且没有依赖项查找代码不会被打乱;

    *可测试性。测试越多,代码质量越好,偶合越低,内聚越高。

  2).缺点

    *生成一个对象的步骤变复杂了;

    *对象生成因为是使用反射编程,在效率上有些损耗;

    *缺少IDE重构操作的支持;

    *IOC框架产品本身的成熟度需要进行评估,如果引入一个不成熟的IOC框架产品,那么会影响到整个项目,所以这也是一个隐性的风险。

三.IoC容器的部分产品:

  *轻量级:Spring、Guice、Pico Container、Avalon、HiveMind;

  *重量级:EJB;

  *半轻半重:JBoss、Jdon等。

四.实现策略:

  *依赖查找。容器提供回调接口和上下文条件给组件。组件就必须使用容器提供的API来查找资源和协作对象,仅有的控制反转只体现在回调方法上,容器将调用这些回调方法,从而让应用代码获得相关资源。

  *依赖注入。组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系。容器全权负责的组件的装配,它会把符合依赖关系的对象通过JavaBean属性或者构造函数传递给需要的对象。通过JavaBean属性注射依赖关系的做法称为设值方法注入。将依赖关系作为构造函数参数传入的做法称为构造器注入。

  AOP

一.AOP概述:

  意为“面向切面编程”,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。是OOP(面向对象编程)的延续,是函数式编程的一种衍生范性。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。把重复代码抽取出来,在需要执行时,使用动态代理技术,在不修改源码的基础上,对我们已有的方法增强。

二.AOP主要功能:

  *日志记录;

  *性能统计;

  *安全控制;

  *异常处理

三.AOP优势:

   *减少重复代码;

   *提高开发效率;

   *维护方便;

   *降低模块之间的耦合度;

   *在程序运行期间,不修改源码对已有方法进行增强。

四.AOP相关术语:

  *Joinpoint(连接点):指那些被拦截的点。在spring中所指方法,因为spring只支持方法类型的连接点;

  *Pointcut(切入点):对连接点进行拦截的定义;

  *Advice(通知/增强):指被拦截到连接点之后要执行的代码,分为前置、后置、环绕、异常、最终通知;

  *Introduction(引介):在不修改类代码的前提下,引介可以在运行期为类动态的添加一些方法和字段;

  *Target(目标对象):代理的目标对象;

  *织入(weave):将切面应用到目标对象并导致代理对象创建的过程,spring 采用动态代理织入,而 AspectJ 采用编译期织入和类装载期织入;

  *Proxy(代理):一个类被AOP织入增强后,就产生一个结果代理类;

  *Aspect(切面):是切入点和通知(引介)的结合;

  *横切关注点:对哪些方法进行拦截,拦截后怎么处理。

Spring(二)--IoC&AOP的更多相关文章

  1. Spring(二)——IoC

    IoC(Inversion of Control)称之为控制反转,指的是在Spring框架的配置文件中声明对象,由框架负责创建对象,这叫做控制反转.实现方式有两种:DI(Dependency Inje ...

  2. Spring核心--IOC&AOP

    Ioc(控制反转) 所谓的控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的.这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转. AOP(面向切面编程) ...

  3. spring的IOC和AOP

     spring的IOC和AOP 1.解释spring的ioc? 几种注入依赖的方式?spring的优点? IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是 ...

  4. spring的IOC和AOP详细讲解

    1.解释spring的ioc? 几种注入依赖的方式?spring的优点? IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是有这个IOC容器进行产生,同时, ...

  5. Spring的IOC和AOP之深剖

    今天,既然讲到了Spring 的IOC和AOP,我们就必须要知道 Spring主要是两件事: 1.开发Bean:2.配置Bean.对于Spring框架来说,它要做的,就是根据配置文件来创建bean实例 ...

  6. Spring框架IOC容器和AOP解析

    主要分析点: 一.Spring开源框架的简介  二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置  一.S ...

  7. Spring中IOC和AOP的详细解释

    我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式. IOC就是典型的工厂模式,通过s ...

  8. spring ioc aop 原理

    spring ioc aop 原理 spring ioc aop 的原理 spring的IoC容器是spring的核心,spring AOP是spring框架的重要组成部分. 在传统的程序设计中,当调 ...

  9. spring(二) AOP之AspectJ框架的使用

    前面讲解了spring的特性之一,IOC(控制反转),因为有了IOC,所以我们都不需要自己new对象了,想要什么,spring就给什么.而今天要学习spring的第二个重点,AOP.一篇讲解不完,所以 ...

随机推荐

  1. Vue知识点回顾(一)

    一.什么是vue? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不 ...

  2. python多线程——如何停止一个死循环的线程

    进程想要执行任务就需要依赖线程.换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程. 那什么是多线程?提到多线程这里要说两个概念,就是串行和并行,搞清楚这个,我们才能更好地理解多 ...

  3. POJ1390 Blocks (区间DP)

    题目链接:POJ 1390.Blocks 题意: 有n个方块排成一列,每个方块有颜色即1到n的一个值,每次操作可以把一段相同颜色的方块拿走,长度为k,则获得的分数为 \(k\times k\),求可获 ...

  4. Elements-of-Python01_Input/Output

    (内容包括输入input,输出print,注释comment,预测类型转换eval,命名与赋值Name & Bestow) 输入Input 和 输出Print Python中利用input() ...

  5. 在CorelDRAW中为对象添加块阴影效果

    我们可以使用CorelDRAW来绘制矢量图形,在勾画出简单的图形后,往往还需要对它们进行一些或简单或复杂的处理,以增加一定的艺术效果.CDR中可供选择的效果有很多,作用的对象可以是文字,也可以是图案. ...

  6. ubuntu安装imagick扩展

    注意:安装该扩展不要求安装ImageMagick从http://pecl.php.net/package/imagick找到imagick的最新的版本 Linux代码 wget http://pecl ...

  7. jmeter压测mysql数据库

    jmeter连接并压测mysql数据库,之前一直想用jmeter一下测试mysql数据库的性能,今天偶然看到一篇博客,于是乎开始自己动手实践. 一.准备工作 1.安装好mysql数据库,可以安装在本地 ...

  8. appium快速入门

    appium快速入门 演示官方demo 第一步:启动安卓模拟器 步骤2:启动Appium桌面 step3:准备自动化脚本与待测APK step4:运行测试代码 分析演示 分析Appium的加载流程 使 ...

  9. Java基础教程——Random随机数类

    Random类 java.util.Random类用于产生随机数.需要导入包: import java.util.Random; 方法 解释 Random() 创建一个Random类对象 Random ...

  10. SpringBoot中JPA的学习

    SpringBoot中JPA的学习 准备环境和项目配置 写一下学习JPA的过程,主要是结合之前SpringBoot + Vue的项目和网上的博客学习一下. 首先,需要配置一下maven文件,有这么两个 ...