切面

3.spring之旅之面向切面的spring

烂漫一生 提交于 2019-12-26 02:06:28
1.什么是面向切面编程 切面提供了取代继承和委托的另一种可选方案,在使用面向切面编程时,我们可以通过声明的方式定义这个功能要以何种方式在何处应用,而无需修改受影响的类.横切关注点可以被模块化为特殊的类,这些类被称为切面. 1定义AOP术语:advise通知,pointcut切点,joinpoint连接点 advise通知:切面也有目标--它必须要完成的工作.在AOP术语中,切面的工作被称为通知.通知定义了切面是什么以及何时使用 spring有5种类型的通知: 1).前置通知before在目标方法被调用之前通知功能 2).后置通知after:在目标方法被调用之后通知 3).返回通知After-returning:目标方法成功执行后调用通知 4).异常通知After-throwing:抛出异常时通知 5).环绕通知Around:方法在调用前后调用后都执行 连接点joinPoint:连接点是在应用执行过程中能够插入切面的一个点.切面代码能够通过这些点插入到应用程序正常的流程中,并添加新的行为 切点pointCut: 切面aspect:是通知和切点的结合,通知和切点共同定义了切面的全部内容---他是什么,在何时和何处完成器功能 引入introduction:引入允许我们向现有的类添加新方法或属性. 织入weaving:织入是把切面应用到目标对象并创新新的代理对象的过程 总结

Spring AOP概念理解

百般思念 提交于 2019-12-26 00:26:50
1.我所知道的aop 初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等。一下子让你不知所措,心想着:怪不得很多人都和我说aop多难多难。当我看进去以后,我才发现:它就是一些java基础上的朴实无华的应用,包括ioc,包括许许多多这样的名词,都是万变不离其宗而已。 2.为什么用aop 1就是为了方便,看一个国外很有名的大师说,编程的人都是“懒人”,因为他把自己做的事情都让程序做了。用了aop能让你少写很多代码,这点就够充分了吧 2就是为了更清晰的逻辑,可以让你的业务逻辑去关注自己本身的业务,而不去想一些其他的事情,这些其他的事情包括:安全,事物,日志等。 3.那些aop的术语 初看这么多术语,一下子都不好接受,慢慢来,很快就会搞懂。 1.通知(Advice) 就是你想要的功能,也就是上面说的 安全,事物,日志等。你给先定义好把,然后在想用的地方用一下。 2.连接点(JoinPoint) 这个更好解释了,就是spring允许你使用通知的地方,那可真就多了,基本每个方法的前,后(两者都有也行),或抛出异常时都可以是连接点,spring只支持方法连接点.其他如aspectJ还可以让你在构造器或属性注入时都行,不过那不是咱关注的,只要记住,和方法有关的前前后后(抛出异常),都是连接点。 3.切入点(Pointcut) 上面说的连接点的基础上

面向切面

随声附和 提交于 2019-12-25 19:47:30
先把一个整体拆类,分别开发,等到发布的时候,再组装到一起运行 AOP核心思想---解耦 事物 : 开启一个事物--执行提交事物---事物回滚 ---关闭事物 像这种有规律的东西,我们把这个有一定规律的规则单独分离出来,作为一个独立的模块。 比如: 一辆汽车的零件都是按照规格在各个生产工厂生产,最后组装到一起。(实现专业化,专人) spring中有:权限认证,日志,事物,懒加载,上下文处理,错误跟踪(异常捕获机制),缓存处理等 来源: CSDN 作者: 那一秒的放纵 链接: https://blog.csdn.net/qq_24596243/article/details/103701244

Spring 初体验

二次信任 提交于 2019-12-25 17:58:19
一直以来,都有听说Java三大开源框架,如雷贯耳,但是一直没有体验过,今天开始逐步体验下这三大开源框架,今天先从Spring开始。 在等待maven构建项目的这段时间,先去查查 Spring的优势?为什么要使用Spring? Spring的ICO容器,将对象之间的依赖关系交给Spring,降低组件之间的耦合性,让我们可以更加专注于业务逻辑。 可以提供众多服务,事物管理。 AOP的很好支持,方便面向切面编程。 对主流框架提供了很少的集成支持,如:Hibernate Struts2等。 Spring DI机制降低了业务对象替换的复杂性。 Spring属于低侵入,代码污染极地 Spring的高度开放性,并不强制依赖于Spring,开发者可以自由选择Spring的全部或者部门。 名词解释: DI: Dependency Injection 依赖注入 和控制反转是一个概念,具体来讲,当一个角色需要另一个角色协助的时候,传统的程序设计中,通常由调用者来创建被调用者的实例。但是在Spring中,创建被调用者将不再由调用者完成,因此也叫作控制反转(Inversion of Control)。创建被调用对象由Spring来完成,在容器实例化对象的时候主动的将被调用者(也可以说是依赖对象)注入给调用对象,因此也叫作依赖注入。 AOP:面向切面编程,通过让业务逻辑从应用服务(如事物管理)中分离出来

Spring是什么?优点是什么?

蹲街弑〆低调 提交于 2019-12-25 17:58:04
大部分项目都少不了Spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢 Spring是什么: Spring是一个轻量级的DI和AOP容器框架。 说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应用一般不依赖于spring的类。 DI:称作依赖注入(Dependency Injection),和控制反转一个概念,具体的讲,当一个角色需要另外一个角色协助的时候,在传统的程序设计中,通常有调用者来创建被调用者的实例。但是在spring中创建被调用者将不再有调用者完成,因此叫控制反转。创建被调用对象有Spring来完成,在容器实例化对象的时候主动的将被调用者(或者说它的依赖对象)注入给调用对象,因此又叫依赖注入。 AOP:Spring对面向切面编程提供了强有力的支持,通过它让我们将业务逻辑从应用服务(如事务管理)中分离出来,实现了高内聚开发,应用对象只关注业务逻辑,不再负责其它系统问题(如日志、事务等)。Spring支持用户自定义切面。 面向切面编程是面向对象编程的有力补充。面向对象编程将程序分成各个层次的对象,面向切面的程序将运行过程分解成各个切面。AOP是从运行程序的角度去考虑程序的结构,提取业务处理过程的切面,OOP是静态的抽象,AOP是动态的抽象

JavaEE学习之Spring AOP

你。 提交于 2019-12-25 06:47:25
一、基本概念   AOP——Aspect-Oriented Programming,面向切面编程,它是spring框架的一个重要组成部分。一般的业务逻辑都有先后关系,我们可以理解为纵向关系,而AOP关注的是横向关系,每一个关注点可以理解为一个横切面。例如我们的大部分代码都会涉及到日志记录,很多的数据库操作都会涉及到事务的创建和提交。那么从横向关注这些逻辑,他们都一个个的切面。   AOP技术的具体实现,可以通过动态代理技术或者是在程序编译期间进行静态的"织入"方式。AOP经常使用的场景包括:日志记录,事务管理,异常处理,安全控制等方面。 Spring 中 AOP 代理由 Spring 的 IoC 容器负责生成、管理,其依赖关系也由 IoC 容器负责管理。在spring中可以仅通过配置文件实现AOP,也可以使用注解实现。   AOP相关概念: Aspect(方面,切面):系统中需要实现的那些交叉功能,是系统模块化的一个切面,或领域。如日志记录。 Joinpoint(连接点):应用程序执行过程中,插入切面的地点,可以是方法调用,异常抛出,或者要修改的字段。 Advice(通知):切面的实际实现,他通知系统新的行为。AOP通知大致上包括:前置通知(Before),环绕通知(Around),后置通知(After Returning),异常通知(Throws Advice) .。

Spring学习之第一个AOP程序

不想你离开。 提交于 2019-12-23 21:47:02
  IOC和AOP是Spring的两大基石,AOP(面向方面编程),也可称为面向切面编程,是一种编程范式,提供从另一个角度来考虑程序结构从而完善面向对象编程(OOP)。   在进行 OOP 开发时,都是基于对组件(比如类)进行开发,然后对组件进行组合,OOP 最大问题就是无法解耦组件进行开发,比如我们上边举例,而 AOP 就是为了克服这个问题而出现的,它来进行这种耦合的分离。AOP 为开发者提供一种进行横切关注点(比如日志关注点)分离并织入的机制,把横切关注点分离,然后通过某种技术织入到系统中,从而无耦合的完成了我们的功能。 1、AOP基本概念 连接点( Jointpoint) : 表示需要在程序中插入横切关注点的扩展点,连接点可能是类初始化、方法执行、 方法调用、字段调用或处理异常等等, Spring 只支持方法执行连接点, 在 AOP 中表示为“在哪里干” ; 切入点( Pointcut) : 选择一组相关连接点的模式, 即可以认为连接点的集合,Spring 支持 perl5 正则表达式和 AspectJ 切入点模式, Spring 默认使用 AspectJ 语法, 在 AOP 中表示为“在哪里干的集合” ; 通知( Advice) : 在连接点上执行的行为, 通知提供了在 AOP 中需要在切入点所选择的连接点处进行扩展现有行为的手段; 包括前置通知( before

java面向切面编程

别来无恙 提交于 2019-12-23 12:45:47
面向切面编程(AOP是Aspect Oriented Program的首字母缩写) ,我们知道,面向对象的特点是继承、多态和封装。而封装就要求将功能分散到不同的对象中去,这在软件设计中往往称为职责分配。实际上也就是说,让不同的类设计不同的方法。这样代码就分散到一个个的类中去了。这样做的好处是降低了代码的复杂程度,使类可重用。 但是人们也发现,在分散代码的同时,也增加了代码的重复性。什么意思呢?比如说,我们在两个类中,可能都需要在每个方法中做日志。按面向对象的设计方法,我们就必须在两个类的方法中都加入日志的内容。也许他们是完全相同的,但就是因为面向对象的设计让类与类之间无法联系,而不能将这些重复的代码统一起来。 也许有人会说,那好办啊,我们可以将这段代码写在一个独立的类独立的方法里,然后再在这两个类中调用。但是,这样一来,这两个类跟我们上面提到的独立的类就有耦合了,它的改变会影响这两个类。那么,有没有什么办法,能让我们在需要的时候,随意地加入代码呢? 这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程 。 一般而言,我们管 切入到指定类指定方法的代码片段称为切面 ,而切入到哪些类、哪些方法则叫切入点。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中,等到需要时再切入对象中去,从而改变其原有的行为。这样看来,AOP其实只是OOP的补充而已

Spring之面向切面编程(AOP)

爱⌒轻易说出口 提交于 2019-12-22 00:15:25
简介 1、什么叫做面向切面编程?      概念:把一个个的横切关注点(某种业务的实现代码)放到某个模块中去,称之为切面。每个切面影响业务的一种功能,切面的目的就是为了功能增强,将需要增强的方法做成切面,实现对业务的增强,就是面向切面编程。   目的:将与业务本身无关,却被业务模块所共同调用的功能代码封装成切面,以减少系统的重复代码,降低耦合,提高可扩展性。   优势:把多个方法前/后的共同代码抽离出来,使用动态代理机制来控制,先执行抽离出来的代码,再执行每一个真实方法. 2、Spring中的AOP使用动态代理来实现:   如果一个类实现了接口,那么spring就使用JDK的动态代理完成AOP;   如果一个类没有实现接口,那么spring就是用cglib完成AOP。 3、AOP的一些基本概念   Joinpoint:连接点,被拦截到需要被增强的方法。去哪里做增强   Pointcut:切入点,哪些包中的哪些类中的哪些方法,可认为是连接点的集合。去哪些地方做增强   Advice:增强,当拦截到Joinpoint之后,在方法执行的什么时机(when)做什么样(what)的增强。   Aspect:切面,Pointcut+Advice,去哪些地方+在什么时候+做什么增强   Weaving:织入,把Advice加到Target上之后,创建出Proxy对象的过程。 切入点语法 1

关于spring的事务传播特性

廉价感情. 提交于 2019-12-22 00:06:18
我们都知道事务的概念,那么事务的传播特性是什么呢?(此处着重介绍传播特性的概念,关于传播特性的相关配置就不介绍了,可以查看spring的官方文档) 在我们用SSH开发项目的时候,我们一般都是将事务设置在Service层 那么当我们调用Service层的一个方法的时候它能够保证我们的这个方法中执行的所有的对数据库的更新操作保持在一个事务中,在事务层里面调用的这些方法要么全部成功,要么全部失败。那么事务的传播特性也是从这里说起的。 如果你在你的Service层的这个方法中,除了调用了Dao层的方法之外,还调用了本类的其他的Service方法,那么在调用其他的 Service方法的时候,这个事务是怎么规定的呢,我必须保证我在我方法里掉用的这个方法与我本身的方法处在同一个事务中,否则如果保证事物的一致性。事务的传播特性就是解决这个问题的,“事务是会传播的”在Spring中有针对传播特性的多种配置我们大多数情况下只用其中的一种:PROPGATION_REQUIRED:这个配置项的意思是说当我调用service层的方法的时候开启一个事务(具体调用那一层的方法开始创建事务,要看你的aop的配置),那么在调用这个service层里面的其他的方法的时候,如果当前方法产生了事务就用当前方法产生的事务,否则就创建一个新的事务。这个工作使由Spring来帮助我们完成的。