Spring(二)--IoC&AOP
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的更多相关文章
- Spring(二)——IoC
IoC(Inversion of Control)称之为控制反转,指的是在Spring框架的配置文件中声明对象,由框架负责创建对象,这叫做控制反转.实现方式有两种:DI(Dependency Inje ...
- Spring核心--IOC&AOP
Ioc(控制反转) 所谓的控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的.这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转. AOP(面向切面编程) ...
- spring的IOC和AOP
spring的IOC和AOP 1.解释spring的ioc? 几种注入依赖的方式?spring的优点? IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是 ...
- spring的IOC和AOP详细讲解
1.解释spring的ioc? 几种注入依赖的方式?spring的优点? IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是有这个IOC容器进行产生,同时, ...
- Spring的IOC和AOP之深剖
今天,既然讲到了Spring 的IOC和AOP,我们就必须要知道 Spring主要是两件事: 1.开发Bean:2.配置Bean.对于Spring框架来说,它要做的,就是根据配置文件来创建bean实例 ...
- Spring框架IOC容器和AOP解析
主要分析点: 一.Spring开源框架的简介 二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置 一.S ...
- Spring中IOC和AOP的详细解释
我们是在使用Spring框架的过程中,其实就是为了使用IOC,依赖注入,和AOP,面向切面编程,这两个是Spring的灵魂. 主要用到的设计模式有工厂模式和代理模式. IOC就是典型的工厂模式,通过s ...
- spring ioc aop 原理
spring ioc aop 原理 spring ioc aop 的原理 spring的IoC容器是spring的核心,spring AOP是spring框架的重要组成部分. 在传统的程序设计中,当调 ...
- spring(二) AOP之AspectJ框架的使用
前面讲解了spring的特性之一,IOC(控制反转),因为有了IOC,所以我们都不需要自己new对象了,想要什么,spring就给什么.而今天要学习spring的第二个重点,AOP.一篇讲解不完,所以 ...
随机推荐
- sqlilab less32-less37
less-32 过滤了单引号,双引号,斜杠,同时设置数据库为GBK编码,可以考虑宽字节注入, 当设置gbk编码后,遇到连续两个字节,都符合gbk取值范围,会自动解析为一个汉字.用脚本来测试下哪些符合 ...
- 两年经验拿到蚂蚁金服,字节offer,附上金九银十BAT面试核心知识点整理
前言 我自己是本科毕业后在老东家干了两年多,老东家算是一家"小公司"(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此找 ...
- ABBYY FineReader 15高级转换功能详解
ABBYY FineReader 15(Windows系统)OCR文字识别软件拥有强大的OCR项目功能,能帮助用户检查识别区域.验证识别出的文本.预处理图像以提高 OCR精确性等等.其强大的OCR微调 ...
- 今天谁也别想阻止我好好学习!「CDR 6·18特惠倒计时2天!」
前几天小编刷抖音,一个以农夫山泉为创作背景的服装原创视频 让我为之一震 这个自称以捡瓶子为生的服装设计师 让我产生了极为浓烈的兴趣 细扒这位小姐姐的视频 她用身边的常见物品 脑洞大开的画出了一系列插画 ...
- FL Studio中如何使用插件混杂功能中的琶音器
琶音指一串和弦音从低到高或从高到低依次连续奏出,可视为分解和弦的一种.通常作为一种专门的技巧训练用于练习曲中,有时作为短小的连接句或经过句出现在乐曲旋律声部中.在Trance类型电子音乐中,琶音的运用 ...
- Non Super Boring Substring 题解(hash+思维)
题目链接 题目大意 给你一个长度为d(d<=1e5)的字符串,要你求有多少个子串满足这个子串不包含长度大于等于k的回文子串 题目思路 首先可以hash预处理,然后O(1)用前缀hash值和后缀h ...
- otter搭建
转载: https://blog.csdn.net/inthat/article/details/93595156 https://www.cnblogs.com/Inspire-Yi/p/80943 ...
- redis 一致性分析
转载: https://blog.csdn.net/qq32933432/article/details/108690254
- Beta冲刺随笔——Day_Two
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 团队进行Beta冲刺 作业正文 正文 其他参考文献 无 今日事今日毕 林涛: ...
- [翻译自官方]什么是RDB和AOF? 一文了解Redis持久化!
概述 本文提供Redis持久化技术说明, 建议所有Redis用户阅读. 如果您想更深入了解Redis持久性原理机制和底层持久性保证, 请参考文章 揭秘Redis持久化: http://antire ...