切面

java web牛刀小试之spring

扶醉桌前 提交于 2019-12-03 16:49:30
一、Spring 框架 1.1 Spring 框架模块组成: 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory ,它是工厂模式的实现。 BeanFactory 使用控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。 Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。 Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。 Spring ORM:Spring

swoft 切面编程 (AOP编程思想)

懵懂的女人 提交于 2019-12-03 13:20:55
详细的文档参考地址: AOP 切面编程技术 链接地址: https://darrykinger.com/index.php/archives/186/ AOP切面编程, Swoft AOP切面编程, AOP的定义, AOP的主要功能, AOP的核心, 不侵入原有功能代码, 给原有的功能添加新的功能, AOP常用业务日志记录事务处理权限处理, AOP的相关术语介绍 来源: https://www.cnblogs.com/bing-yu12/p/11796689.html

专门的aop框架-AspectJ

喜你入骨 提交于 2019-12-03 08:23:06
在前面的spring的aop的使用的基础上:切面类只能写一个方法,只能增强一个功能。就需要创建多个切面对象,配置多个<aop:advisor> AspectJ的注解式开发步骤 定义一个普通的类,添加@Aspect注解,表明是一个切面类 定义要增强的方法,通过注解确定增强的类型 @Before:前置通知 @AfterReturning:后置通知 @Around:环绕通知 @AfterThrowing:异常通知 @After:最终通知(相当于java中的finally) 通过aspectj的execution表达式确定要增强的目标方法 在spring配置文件注册aspectj的自动代理 创建目标对象,创建切面对象 如果一个切面中 execution表达式需要被重复使用多次 AspectJ的通知方法中获取目标方法的数据 目标方法的参数【每一种通知都可用】 对aspectj的每一种通知类型都可以使用,在方法里面添加org.aspectj.lang.JoinPoint;参数 目标方法的返回值【后置通知可用】 环绕通知 来源: https://www.cnblogs.com/Tunan-Ki/p/11784878.html

Spring的AOP

孤人 提交于 2019-12-03 08:22:26
基本的概念 切面:Aspect 在程序中就是一个类,该类中定义的方法就是要增强的功能。 连接点:JoinPoint 切面中的每一个增强方法都是一个连接点 切入点:PointCut 对哪个目标对象的哪些方法进行增强 目标对象:target 要被增强的对象【原对象】 代理对象:proxy 增强后的对象【代理对象与目标对象数据类型相同】 织入:wave 将切面对目标对象进行增强 Spring如何写一个切面类? Advice:通知 Advisor:顾问 Spring的AOP编程步骤 1. 通知实现aop编程 2. 添加jar包,aop、aopalliance-1.0 3. 写目标类和目标方法(比如:UserServiceImpl的remove和list方法) 4. 写切面中的通知类 5. 通知分类:   前置通知:MethodBeforeAdvice   后置通知:AfterReturningAdvice   环绕通知:MethodInterceptor   异常通知:ThrowsAdvice 本次需求:对UserServiceImpl的目标对象进行增强,在方法执行前进行权限校验 6. 配置 spring的配置文件 7. 其他通知类型的案例: 创建切面类,实现对应的通知类型的接口 重写方法,定义要增强的功能 在spring的配置文件中创建切面类的对象 在spring中织入切面 总结

SpringAOP源码分析总结

一世执手 提交于 2019-12-03 06:40:23
1、Advisor(增强器):充当Advice和Pointcut的适配器,类似使用Aspect的@Aspect注解的类(前一章节所述)。一般有advice和pointcut属性。 祖先接口为org.springframework.aop.Advisor,应用中可直接使用org.springframework.aop.support.DefaultPointcutAdvisor < aop:advisor>大多用于事务管理 ,定义通知器(通知器跟切面一样,也包括通知和切点) 2、Advice:用于定义拦截行为,祖先接口为org.aopalliance.aop.Advice,该接口只是标识接口,应用中可直接实现BeforeAdvice ,ThrowsAdvice,MethodInterceptor ,AfterReturningAdvice ,IntroductionInterceptor 等子接口 <!-- 会重复读,不会脏读事务 --> < tx: advice id = "txAdvice" transaction - manager = "transactionManager" > < tx: attributes > < tx: method name = "*" timeout = "120" propagation = "REQUIRED" rollback - for

SpringAOP源码详解

丶灬走出姿态 提交于 2019-12-03 06:35:01
SpringAOP是spring的动态代理模块。我们在spring的事务等多个方面都用到了springAOP方面的知识。 我们就以事务的动态代理原理解析来分析下springAOP的源码。 SpringAOP有几个核心概念: (1).切面Aspect: Aspect 声明类似于 Java 中的类声明,在 Aspect 中会包含着一些切入点Pointcut 以及对切入点进行相应的操作的通知Advice。 (2).连接点Joint point:表示在程序中明确定义的点,典型的包括方法调用,对类成员的访问以及异常处理程序块的执行等等,它自身还可以嵌套其它连接点jointpoint。 (3).切入点Pointcut:表示一组连接点jointpoint,这些连接点或是通过逻辑关系组合起来,或是通过通配、正则表达式等方式集中起来,它定义了相应的操作处理通知Advice将要发生的地方。 (4).通知Advice:Advice 定义了在切入点pointcut 里面定义的程序点具体要做的操作和处理,它通过 before、after 和 around 来区别是在每个切入点之前、之后还是代替执行的代码。 (5).目标对象Target:代理的目标对象,即切面要被应用到的目标对象。 (6).织入Weave:指将切面应用到目标对象,并导致代理对象创建的过程

详细解读 Spring AOP 面向切面编程(一)

半城伤御伤魂 提交于 2019-12-03 05:16:42
今天我要和大家分享的是 AOP(Aspect-Oriented Programming)这个东西,名字与 OOP 仅差一个字母,其实它是对 OOP 编程方式的一种补充,并非是取而代之。翻译过来就是“面向方面编程”,可我更倾向于翻译为“面向切面编程”。它听起有些的神秘,为什么呢?当你看完这篇文章的时候,就会知道,我们做的很重要的工作就是去写这个“切面” 。那么什么是“切面”呢? 没错!就是用一把刀来切一坨面。注意,相对于面而言,我们一定是横着来切它,这简称为“横切”。可以把一段代码想象成一坨面,同样也可以用一把刀来横切它,下面要做的就是如何去实现这把刀! 来源: https://www.cnblogs.com/cxydmx/p/11779618.html

详细解读 Spring AOP 面向切面编程(二)

余生长醉 提交于 2019-12-03 05:16:14
本文是《详细解读 Spring AOP 面向切面编程(一)》的续集。 在上篇中,我们从写死代码,到使用代理;从编程式 Spring AOP 到声明式 Spring AOP。一切都朝着简单实用主义的方向在发展。沿着 Spring AOP 的方向,Rod Johnson(老罗)花了不少心思,都是为了让我们使用 Spring 框架时不会感受到麻烦,但事实却并非如此。那么,后来老罗究竟对 Spring AOP 做了哪些改进呢? 现在继续! 9. Spring AOP:切面 之前谈到的 AOP 框架其实可以将它理解为一个拦截器框架,但这个拦截器似乎非常武断。比如说,如果它拦截了一个类,那么它就拦截了这个类中所有的方法。类似地,当我们在使用动态代理的时候,其实也遇到了这个问题。需要在代码中对所拦截的方法名加以判断,才能过滤出我们需要拦截的方法,想想这种做法确实不太优雅。在大量的真实项目中,似乎我们只需要拦截特定的方法就行了,没必要拦截所有的方法。于是,老罗同志借助了 AOP 的一个很重要的工具,Advisor(切面),来解决这个问题。它也是 AOP 中的核心!是我们关注的重点! 也就是说,我们可以通过切面,将增强类与拦截匹配条件组合在一起,然后将这个切面配置到 ProxyFactory 中,从而生成代理。 这里提到这个“拦截匹配条件”在 AOP 中就叫做 Pointcut(切点)

Spring(四):面向切面编程AOP

 ̄綄美尐妖づ 提交于 2019-12-03 04:21:07
横切关注点:分布于应用中多处的功能 面向切面编程AOP:将横切关注点与业务逻辑相分离 在使用面向切面编程时,仍在一个地方定义通用功能,但是可以通过声明的方式定义这个功能以何种方式在何处应用,而无需修改受影响的类。 横切关注点可以被模块化为特殊的类,这些类被称为切面。 好处 : 每个关注点集中于一处,而不是分散到多处代码中 服务模块更加简洁,因为它们只包含主要关注点的代码,次要关注点被转移到切面中了 1、定义AOP术语 1.1、通知(Advice) 切面的工作被称为通知。 通知定义了切面是什么以及何时使用。 Spring切面可以应用的5种类型的通知: Before——在方法被调用之前调用通知 After——在方法完成之后调用通知,无论方法执行是否成功。 After-returning——在方法成功执行之后调用通知。 After-throwing——在方法抛出异常后调用通知。 Around——通知包裹了被通知的方法,在被通知的方法调用之前和调用之后执行自定义的行为。 1.2、连接点(Joinpoint) 连接点是在应用执行过程中能够插入切面的一个点,这个店可以是调用方法时、抛出异常时、甚至修改一个字段时。 1.3、切点(Pointcut) 切点有助于缩小切面所通知连接点的范围,切点的定义会匹配通知所要织入的一个或多个连接点。通常使用明确的类名和方法名来指定这些切点

Spring通知,顾问,增强

ⅰ亾dé卋堺 提交于 2019-12-03 04:02:22
1.AOP (Aspect Oriented Programming 面向切面编程) 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 面向对象编程是从【静态角度】考虑程序的结构,而面向切面编程是从【动态角度】考虑程序运行过程。 AOP底层,就是采用【动态代理】模式实现的。采用了两种代理:JDK动态代理和CGLIB动态代理。 基本术语(一些名词): (1)切面(Aspect) 切面泛指[*交叉业务逻辑*]。事务处理和日志处理可以理解为切面。常用的切面有通知(Advice)与顾问(Advisor)。实际就是对主业务逻辑的一种增强。 (2)织入(Weaving) 织入是指将切面代码插入到目标对象的过程。代理的invoke方法完成的工作,可以称为织入。 (3) 连接点(JoinPoint) 连接点是指可以被切面织入的方法。通常业务接口的方法均为连接点 (4)切入点(PointCut) 切入点指切面具体织入的方法 注意