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. cakephp中sql查询大于

    $list = $this->Capital->find('all', array('conditions'=>array('amount >'=>0)));

  2. 企业级工作流解决方案(十五)--集成Abp和ng-alain--Abp其他改造

    配置功能增强 Abp定义了各种配置接口,但是没有定义这些配置数据从哪里来,但是管理配置数据对于一个应用程序来说,是必不可少的一件事情. .net的配置数据管理,一般放在Web.config文件或者Ap ...

  3. 02python开发之基本运算符

    02 python开发之基本运算符 目录 02 python开发之基本运算符 2 基本运算符 2.1 算数运算符 2.1.1 种类 2.1.2 用法 2.2 比较运算符 2.2.1 种类 2.2.2 ...

  4. open()和with open() as的区别

    2020-03-18  20:37:55 open()和with open() as的区别 1 file = open("test.txt","r") 2 fo ...

  5. php进阶学习-单例设计模式

    什么是单例模式(singleton)? 在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个,同时这个类还必须提供一个访问该类的全局访问点. 单例模式的特点 一个类只有一个实例 私有克隆 ...

  6. LCCUP 2020 秋季编程大赛 补题

    果然是力扣杯,难度较于平时周赛提高了不少,个人感觉最后两题并不太容易QAQ LCP 18.早餐组合 #二分思想 题目链接 题意 你获得了每种主食的价格,及每种饮料的价格,你需要选择一份主食和一份饮料, ...

  7. 多态,向上转型,向下转型,final关键字

    多态 概述   多态封装性,继承性之后,面向对象的第三大特性. 定义   多态:是指同一种行为,具有多个不同的表现形式.   生活中,比如跑的动作,猫,狗,大象跑起来的动作都是不一样的,再比如飞的动作 ...

  8. 冲刺随笔——Day_Ten

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 团队进行Alpha冲刺 作业正文 正文 其他参考文献 无 ...

  9. html基础标签用法

    head title 行级双 网页标题标签 meta 单 存放网页重要信息,字符集,搜索索引,简介等(不显示) a 标签行内双标签 href="跳转路径", (JavaScript ...

  10. 转:关于Python中的lambda,这篇阅读量10万+的文章可能是你见过的最完整的讲解

    lambda是Python编程语言中使用频率较高的一个关键字.那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多.这里,我们通过阅读各方资料,总结了关于Python ...