AcpectJ注释方式配置AOP
1.AspectJ的概念
@AspectJ类似于Java注解的普通Java类
Spring可以使用AspectJ来做切入点解析
AOP的运行时仍旧是纯的Spring AOP,对AspectJ的编译器或者织入无依赖性.
2.配置方式
注解方式 -- @Configuration
@EnableAspectJAutoProxy
任何拥有@Aspect注解的bean都将被Spring自动识别并应用
注释的类可以有方法和字段,他们也可以有切入点(pointcut),通知(Advice)和引入(introduction)声明
@Aspect注解不能够通过类路径自动检测发现,需要配合使用@Component注释或者在XML配置bean
xml文件方式
--<aop:aspectj-autoproxy/>
3.ASpectJ为编译期的AOP,检查代码并匹配连接点与切入点的代价昂贵
好的切入点包括
--选择特定类型的连接点(execution/get/set/call/handler)
--确认连接点范围(within/withincode)
--匹配上下文信息(this/target/@annotation)
4.Around advice
使用@Around注释来声明,通知方法的第一个参数必须是ProcessdingJoinPoint类型
再通知内部调用processdingjoinpoint的proceed()方法会引导至真正的方法,传入一个Object[]对象,数组中的值将被作为参数传递给方法
5. * 使用execution表达式
* 使用已经定义表达式的方法名 --@Before("pointcut()")
@AfterReturning(pointcut="implPointcut()",returning="args")
@AfterThrowing(pointcut="pointcut()",throwing="e")
@After("pointcut()")
@Pointcut("execution(* com.aspectj.impl.*Impl.*(..))")
@Pointcut("within(com.aspectj.impl.*)")
6.Advice扩展
1>给advice传递参数 -- 方法的参数可以是任何类的对象
在@before时+&&args(account,..)
定义注解传参
@Before("pointcut()&&@annotation(methodValue)")
public void beforeWithAnnotation(Methodvalue methodValue)
SpringAOp可以处理泛型类的声明和使用方法的参数
通知和切入点注解有一个额外的"argNames"属性,它可以用来指定所注解的方法的参数名
--如果第一参数时JoinPoint,ProceedingJoinPoint,JoinPoint.StaticPart,那么可以忽略它 -- -- ,argNames="bean,auditable,.."
2>Introductions
允许一个切面声明一个通知对象实现指定接口,并且提供了一个接口实现类来代表这些对象
introduction使用@DeclareParents进行注解,这个注解用来定义匹配的类型拥有一个新的parent
3>切面实例化模型 -- 高级主题
"perthis"切面通过指定@Aspect注解perthis子句实现
每个独立的service对象执行时都会创建一个切面实例
service对象的每个方法在第一次执行的时候创建切面实例,切面在service对象失效的同时失效
http://blog.csdn.net/jacxuan/article/details/53454819
AcpectJ注释方式配置AOP的更多相关文章
- 基于配置文件的方式配置AOP
之前说的都是通过注释的方式配置,接下来说说如何使用配置文件配置AOP 还是原来的代码,去掉所有注释,接下来配置最基本的几个bean. 然后使用<aop:config>标签进行配置,然后配切 ...
- xml的方式配置AOP:Aspect Oriented Programming
在某些类中, 什么时机, 做什么事情 切入点(point-cut): 在某些类中(Class<?>[] itfc = new Class<?>[] { IStudentServ ...
- Spring_基于配置文件的方式配置AOP
applicationContext-xml.xml <?xml version="1.0" encoding="UTF-8"?> <bean ...
- 22Spring基于配置文件的方式配置AOP
直接看代码: package com.cn.spring.aop.impl; //加减乘除的接口类 public interface ArithmeticCalculator { int add(in ...
- Annotation方式配置AOP
package com.xk.spring.kp04_aop.aop.s02_annotation; public interface IStudentService { public void sa ...
- spring-AOP框架(基于配置文件的方式配置AOP)
.xml: ref-指向,order-指定优先级
- SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP
AOP(Aspect Oriented Programming),是面向切面编程的技术.AOP基于IoC基础,是对OOP的有益补充. AOP之所以能得到广泛应用,主要是因为它将应用系统拆分分了2个部分 ...
- Spring(二十):Spring AOP(四):基于配置文件的方式来配置 AOP
基于配置文件的方式来配置 AOP 前边三个章节<Spring(十七):Spring AOP(一):简介>.<Spring(十八):Spring AOP(二):通知(前置.后置.返回. ...
- spring aop注解方式与xml方式配置
注解方式 applicationContext.xml 加入下面配置 <!--Spring Aop 启用自动代理注解 --> <aop:aspectj-autoproxy proxy ...
随机推荐
- js剪贴板操作
这是一个很有意思的地方,很多不了解的人或者初级的js编程者会觉得很不可思议,js都那么强大了,访问剪贴板一个粘贴复制,大概就是一行命令的事情,但是事实如此,js对于访问本地计算机的剪贴板的支持其实是十 ...
- Gradle for Android(一)
Gradle是一种基于Groovy的动态DSL,而Groovy语言是一种基于jvm的动态语言.这里只分享实际开发中会用到的场景,您不需要去学习Groovy语言,知道Java的您是很容易阅读Groovy ...
- 自以为是而已,不知道它是什么 window.onload 放执行
var $=jQuery=function(onload){window.onload=onload();} jQuery(function(){alert(2);}); $(function(){a ...
- [摸鱼] 配置的vim的使用攻略!
vim使用攻略 <>=f 折叠与缩进 开:<>[^fuck]cc 关:<>cu 缩进一块使用V选中,按>> [Ctrl]V 以列为单位选 za,打开或关 ...
- glRotatef 转动方向
http://blog.sina.com.cn/s/blog_3c6889fe0100qko6.html glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLf ...
- BeeFramework 笔记 四(UISignal 总结)
http://yang152412.blog.163.com/blog/static/175861582201332321351862/ 一.UISignal的工作模式 1.发送Signal,比如从V ...
- C++编程见闻
今天心血来潮,看到很多天借的一本书<轻松学C++编程>,书就一般,但是由于自己的刚开始学c++,勉强凑活来看吧,就把学习的过程亮出来,权且对自己的一种变相激励也好. 程序一 首先:打开vi ...
- ubuntu软件包管理
ubuntu安装好了后首先要会下载和管理系统的软件包:ubuntu的软件管理方式是apt-get 安装软件包apt-get harvey@ubuntu:/var/cache/apt$ which ap ...
- asp.net生成word文档服务器配置
一.asp.net生成word文档,布署到正式的服务器上就出现 错误:System.Runtime.InteropServices.COMException (0x800A1098 ...
- Linux下多进程服务端客户端模型二(粘包问题与一种解决方法)
一.Linux发送网络消息的过程 (1) 应用程序调用write()将消息发送到内核中 ( 2)内核中的缓存达到了固定长度数据后,一般是SO_SNDBUF,将发送到TCP协议层 (3)IP层从TCP层 ...