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.一篇讲解不完,所以 ...
随机推荐
- Poem Codes - 攻防世界(Decrypt-the-Message)
Poem Codes Poem Code 最显著的特点就是一首诗歌. 详情请戳这里 让我们一起来过滤一遍这个神奇的加密过程~ ① 给出一首诗歌 for my purpose holds to sail ...
- CorelDRAW中如何精确移动对象
图形的变换操作包括改变图形的位置.大小.比例,旋转图形.镜像图形和倾斜图形,是在绘图编辑时经常使用的操作.使用"选择工具"选择对象之后,在对象上按下鼠标左键并拖动,即可任意移动对象 ...
- objetive-C中属性变量和成员变量
属性变量 @property和@synthesize可以自动生成某个类成员变量的存取方法. readwrite:这个属性是默认的情况,会自动生成存取器 assign:这个属性一般用来处理基础类型,比如 ...
- 9、Spring Boot安全
1.Spring Security简介 Spring Security是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型.他可以实现强大的web安全控制.对于安全控 ...
- 自定义 JSTLFunction
复习常用JSTL Function为什么需要自定义Function如何自定义Function,例子:1.在独立的项目中(也可以在web项目中)的类中(比如Functions)编写一个static方法: ...
- kafka 消息存储分析
kafka 可以支持海量数据发送,轻轻松松QPS过十万,如果JVM内存存储这一块如果不够优秀,根本无法支持这么庞大的QPS. 存储架构(这里这是落地数据,并木有涉及到序列化发送数据到broker) R ...
- CodeChef-LECOINS Little Elephant and Colored Coins 题解
CodeChef-LECOINS Little Elephant and Colored Coins Little Elephant and Colored Coins The Little Elep ...
- LeetCode 033 Search in Rotated Sorted Array
题目要求:Search in Rotated Sorted Array Suppose a sorted array is rotated at some pivot unknown to you b ...
- Beta冲刺随笔——Day_Four
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 团队进行Beta冲刺 作业正文 正文 其他参考文献 无 今日事今日毕 林涛: ...
- 0001_20190327_使用frp搭建内网穿透
1. 环境 a) 公网服务器为阿里云的ECS Windows 2008 R2服务器, 有公网IP地址; 这个作为frp的服务器 b) 内网是开发服务器, Cento ...