aop术语描述,解释Spring中IOC DI AOP

1,解释Spring中IOC DI AOPioc就是控制翻转或是依赖注入 。通俗的讲就是如果在什么地方需要一个对象,你自己不用去通过new 生成你需要的对象,而是通过spring的bean工厂为你长生这样一个对象 。aop就是面向切面的编程 。比如说你每做一次对数据库操作,都要生成一句日志 。如果,你对数据库的操作有很多类,那你每一类中都要写关于日志的方法 。但是如果你用aop,那么你可以写一个方法 , 在这个方法中有关于数据库操作的方法 , 每一次调用这个方法的时候,就加上生成日志的操作 。说的不是很清晰,多写多看就能明白了 。
2 , specific什么意思specificspecific[英][sp??s?f?k][美][sp??s?f?k]adj.明确的; 特种的; 具体的; [免疫学]特效的; n.特效药; 特性; 细节; 显著的性质,特性; 复数:specifics最高级:most specific比较级:more specific以上结果来自金山词霸例句:1.mrs clinton named no specific institutions or countries. 希拉里并未点明具体的机构或国家 。.-----------------------------------如有疑问欢迎追问!满意请点击右上方【选为满意回答】按钮
3 , 解释Spring中IOC DI AOPioc就是控制翻转或是依赖注入 。通俗的讲就是如果在什么地方需要一个对象,你自己不用去通过new 生成你需要的对象 , 而是通过spring的bean工厂为你长生这样一个对象 。aop就是面向切面的编程 。比如说你每做一次对数据库操作,都要生成一句日志 。如果,你对数据库的操作有很多类,那你每一类中都要写关于日志的方法 。但是如果你用aop,那么你可以写一个方法 , 在这个方法中有关于数据库操作的方法,每一次调用这个方法的时候 , 就加上生成日志的操作 。说的不是很清晰,多写多看就能明白了 。1.IoC是什么?IoC(Inversion of Control)控制反转,IoC是一种新的Java编程模式,目前很多轻量级容器都在广泛使用的模式 。2.IoC解决了什么问题?在IoC出现以前,组件之间的协调关系是由程序内部代码来控制的,或者说,以前我们使用New关键字来实现两组间之间的依赖关系的 。这种方式就造成了组件之间的互相耦合 。IoC(控制反转)就是来解决这个问题的,它将实现组件间的关系从程序内部提到外部容器来管理 。也就是说,由容器在运行期将组件间的某种依赖关系动态的注入组件中 。3.IoC的实现方式 及 与DI的关系?(1).依赖查找(Dependency Lookup):容器中的受控对象通过容器的API来查找自己所依赖的资源和协作对象 。这种方式虽然降低了对象间的依赖,但是同时也使用到了容器的API,造成了我们无法在容器外使用和测试对象 。依赖查找是一种更加传统的IoC实现方式 。(2).依赖注入(Dependency Injection):这就是DI,字面上理解 , 依赖注入就是将服务注入到使用它的地方 。对象只提供普通的方法让容器去决定依赖关系, 容器全权负责组件的装配,它会把符合依赖关系的对象通过属性(JavaBean中的setter)或者是构造子传递给需要的对象 。相对于IoC而言,依赖注入(DI)更加准确地描述了IoC的设计理念 。所谓依赖注入,即组件之间的依赖关系由容器在应用系统运行期来决定 ,  也就是由容器动态地将某种依赖关系的目标对象实例注入到应用系统中的各个关联的组件之中 。4.Spring中的IoC与DI:IoC是Spring的核心,贯穿始终 。对于Spring框架来说,就是由Spring来负责控制对象的生命周期和对象间的关系 。Spring中DI有两种实现方式---Setter方式(传值方式)和构造器方式(引用方式) 。IOC 控制反转好比你有一个插座,上面有几个插口,现在你要用笔记本,你插上插头,可是你不用笔记本用别的电器 , 是不是又要插上另一个插口,这些都写在程序里的,可是一般class类我们不介意改动,所以就在配置文件中配置,动态写,IOC就实现了这个 配置文件中改下注入就OK了AOP 面向切面编程比如你要对所有方法以add开头的方法进行监听,决定是放行,还是拦截可以用来对所有的增删改操作写入日志【aop术语描述,解释Spring中IOC DI AOP】
4,面向方面编程的简介在考虑对象及对象与其他对象的关系时 , 我们通常会想到继承这个术语 。例如,定义某一个抽象类— Dog 类 。在标识相似的一些类但每个类又有各自的独特行为时,通常使用继承来扩展功能 。举例来说,如果标识了 Poodle,则可以说一个 Poodle 是一个 Dog , 即 Poodle继承了 Dog 。到此为止都似乎不错,但是如果定义另一个以后标识为 Obedient Dog 的独特行为又会怎样呢?当然,不是所有的 Dogs 都很驯服 , 所以 Dog 类不能包含 obedience 行为 。此外,如果要创建从 Dog继承的 Obedient Dog 类,那么 Poodle 放在这个层次结构中的哪个位置合适呢?Poodle 是一个 Dog , 但是 Poodle 不一定 obedient;那么 Poodle 是继承于 Dog 还是 Obedient Dog 呢?都不是,我们可以将驯服看作一个方面,将其应用到任何一类驯服的 Dog,我们反对以不恰当的方式强制将该行为放在 Dog 层次结构中 。在软件术语中 , 面向方面的编程能够独立于任何继承层次结构而应用改变类或对象行为的方面 。然后,在运行时或编译时应用这些方面 。举一个关于AOP的示例,然后进行描述 , 说明起来比较容易 。首先,定义四个关键的 AOP 术语,这很重要,因为我将反复使用它们:接合点 (Joinpoint) — 代码中定义明确的可识别的点 。切点 (Pointcut) — 通过配置或编码指定接合点的一种方法 。通知 (Advice) — 表示需要执行交叉切割动作的一种方法混入 (Mixin) — 通过将一个类的实例混入目标类的实例引入新行为 。为了更好地理解这些术语 , 可以将接合点看作程序流中定义好的一点 。说明接合点的一个很好的示例是:在代码调用一个方法时,发生调用的那一点被认为是一个接合点 。切点用于指定或定义希望在程序流中截获的接合点 。切点还包含一个通知,该通知在到达接合点时发生 。因此 , 如果在一个调用的特定方法上定义一个切点,那么在调用该方法或接合点时,AOP 框架将截获该切点 , 同时还将执行切点的通知 。通知有几种类型,但是最常见的情况是将其看作要调用的另一个方法 。在调用一个带有切点的方法时,要执行的通知将是另一个要调用的方法 。要调用的这个通知或方法可以是对象中被截获的方法 , 也可以是混入的另一个对象中的方法 。我们将在后面进一步解释混入 。我用自己的话这样讲吧:1.面向对象主要体现在自定义类上,这是与面向过程编程有着最大区别的地方(面向过程是用函数封装一个操作,c语言的特点);2.一个类就是一个用户定义类型,我们直接使用的int ,float等等其实也都是一个类,只是它们是现成的 , 不用我们自定义罢了 。自定义类a的方法:class a//数据成员和成员函数;};3.至于对象,也就是类的一个实例,比如 , 以上面的类a为例,创建一个对象object(或者实例)的方法如下:a object;或者直接在类的定义中这么写:class a//数据成员和成员函数;}object;此时,object就是自定义类型a的一个对象,object具有a中具有的属性和操作(即数据成员和成员函数) 。3.谈到类与类之间的层次关系,就是继承的概念了 。比如自定义了两个类:经理manager和员工employee经理类中的属性有:姓名 , 性别,部门,工龄,管理者级别,管理的雇员列表员工类中的属性有:姓名,性别 , 部门,工龄此时,在定义二者的时候 , 就可以使用继承机制,即:经理类可以由员工类继承而来clss manager: public employee//属性有管理者级别和管理的雇员列表//其他的属性已在employee中体现//……};这里,emloyee称为基类或者父类,manager称为派生类或者子类 。4.至于域的概念,在理解面向对象编程机制中并不是重点 。希望对你有所帮助~5,java编程spring里ioc和aop用什么原理实现的控制反转(IOC)(理解好Ioc的关键是要明确“谁控制谁 , 控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”)1、Ioc—Inversion of Control:即“控制反转”,不是什么技术,而是一种设计思想 。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制 。2、谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象即由Ioc容器来控制对象的创建 。谁控制谁?当然是IoC 容器控制了对象 。控制什么?那就是主要控制了外部资源获?。ú恢皇嵌韵蟀ū热缥募龋?。3、为何是反转 , 哪些方面反转了: 有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象 。为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转 。哪些方面反转了?依赖对象的获取被反转了 。还是不明白没事,下面搞个简单案例来说就懂啦 ?。。?例子:当我们在任何一个有实际开发意义的程序项目中 , 我们会使用很多类来描述他们特有的功能,并且通过类与类之间的相互协作来完成特定的业务逻辑 。这个时候,每个类都需要负责管理与自己有交互的类的引用和依赖,代码将会变的异常难以维护和极高的高耦合 。而IOC的出现正是用来解决这个问题 , 我们通过IOC将这些依赖对象的创建、协调工作交给spring容器去处理,每个对象值需要关注其自身的业务逻辑关系就可以了 。在这样的角度上来看,获得依赖的对象的方式 , 进行了反转,变成了由spring容器控制对象如何获取外部资源(包括其他对象和文件资料等) 。总的来说:IOC就是通过在Xml配置文件里依赖注入来解决代码问题 。IOC的注入类型有几种?主要可以划分为三种:构造函数注入、属性注入和接口注入 。Spring支持构造函数注入和属性注入面向切面(AOP)(面向切面编程,AOP其实只是OOP的补充而已,AOP基本上是通过代理机制实现的 。)我们管切入到指定类指定方法的代码片段称为切面,而切入到哪些类、哪些方法则叫切入点 。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中,等到需要时再切入对象中去 , 从而改变其原有的行为 。我们都知道 Java 是 OOP-面向对象编程的,它有自己的优势 , 也有自己的不足 。比如说:在我们开发中,都会有一条业务主线(即客户的需求) 。而我们要做的就是实现这个主线上的需求 。我们在实现这些功能的时候 , 经常要干一些额外的不可避免的事情,比如事务的管理 , 日志的记录等,就很繁杂且代码量增多 , 所以 Spring 提供了另一种角度来思考程序结构,也就是把这一些事情剥离出来 , 然后适时适地的把它们加入到我们的代码中,比如说 声明式事务管理的时候 , 我们在 service 层检测到save*、update*这些方法要被调用的时候,我们先进行开启事务什么的,这就是AOP,面向编程的思想 。AOP的术语:1、通知(Advice):就是你想要的功能,也就是上面说的 安全,事物,日志等 。你给先定义好把 , 然后在想用的地方用一下2、连接点(JoinPoint):这个更好解释了,就是spring允许你使用通知的地方,那可真就多了,基本每个方法的前,后(两者都有也行),或抛出异常时都可以是连接点 , spring只支持方法连接点.其他如aspectJ还可以让你在构造器或属性注入时都行,不过那不是咱关注的,只要记?。?和方法有关的前前后后(抛出异常),都是连接点 。3、切入点(Pointcut):上面说的连接点的基础上,来定义切入点,你的一个类里 , 有15个方法,那就有几十个连接点了对把 , 但是你并不想在所有方法附近都使用通知(使用叫织入,以后再说),你只想让其中的几个,在调用这几个方法之前,之后或者抛出异常时干点什么,那么就用切点来定义这几个方法,让切点来筛选连接点,选中那几个你想要的方法 。4、切面(Aspect):切面是通知和切入点的结合 。现在发现了吧,没连接点什么事情,连接点就是为了让你好理解切点 , 搞出来的,明白这个概念就行了 。通知说明了干什么和什么时候干(什么时候通过方法名中的before,after , around等就能知道),而切入点说明了在哪干(指定到底是哪个方法),这就是一个完整的切面定义 。5、引入(introduction):允许我们向现有的类添加新方法属性 。这不就是把切面(也就是新方法属性:通知定义的)用到目标类中吗6、目标(target):引入中所提到的目标类,也就是要被通知的对象 , 也就是真正的业务逻辑,他可以在毫不知情的情况下,被咱们织入切面 。而自己专注于业务本身的逻辑 。7、代理(proxy):怎么实现整套aop机制的,都是通过代理,这个一会给细说 。8、织入(weaving):把切面应用到目标对象来创建新的代理对象的过程 。有3种方式,spring采用的是运行时,为什么是运行时,后面解释 。主要应用了java的反射技术,很酷;可以根据给定的参数(主要是字符串)创建相应的bean,访问相应的方法或构造器以及成员变量;具体应用可以查看帮助文档 java.lang.reflect包下的Constructor,Method, Field/java.lang.Classspring中ioc使用的是“生产工厂”,aop使用的是“动态代理”想知道更多建议去看一下马士兵 的系列视频教程 。

    推荐阅读