Spring配置介绍(二)

之前说过springbean,这篇我们看看spring aop

Aop对应的schemahttp://www.springframework.org/schema/aop,前缀aop

同样,我们看一下用xmlspy打开aopxsd, spring-aop-3.0.xsd


Config下面有三个节点。分别为pointcut,advisoraspect

pointcut


pointcut切入点。定义切点的地方。他有一个id,和一个表达式,

id是名字,可以在通知里配置这个id,而通知里不再需要定义pointcut了,可以通过ID引用。

expression这个是配置切入点的通配表达式

advisor



 
这里面有五个节点

id,是可选的,可以不配置,但如果想在后面的aspect调用,是需要给一个名字的,如果没有,spring会随机生成一个。

advice-ref:这人是必选项,是通知的类的引用,也就是是一个spring bean,而这个类要求是实现Advice接口。

pointcut:切点,与上一个节点的expression含义是一样的。

Pointcut-ref:切点引用,就是上一个点节的id

order次序,如果切面有多个通知,则可以使用order排序,order值小优先级高。这样就会实现多个织入顺序执行。

aspect


优先说节点

pointcut:切点,它和之前pointcut定义是一样的,两个属性,一个id,一个是expression

declare-parents:定义父类



 
他可以让一个指定规则的类,实现一个接口,与其说是让他实现接口,实际上他就像一个拦截器一样,对指定类,用代理转换

比如

<declare-parents types-matching=”com.x.A+” implement-interface=”com.x.I” default-impl=”com.x.C”  />

他含义是指,如果有A类来申请对象,那么这里会转换成代理类,而这个代理默认会实现三个接口,其中有一个就是I,默认实现为C。也就是说如果C配置了切面,那么这个类,会顺理成章的走进了通知的类里。这里面有一个需要注意的是,C的类需要实现I接口。

default-impldelegate-ref一个是配置类,一个是配置类的引用。

如果下面节点中有after,before,after-returning,after-throwing,around任意一个或多个,对于aspect节点中的属性,id,ref,order就需要有准确的值


当然id表示通知的名称,ref表式通知的引用,order表式次序

我们再看下面的节点

after是指在切面处执行之后 织入,如果切面方法出现异常,after也会执行,不会中断

before是指在切面处之前执行。

after-returning,是指在切面返回后再执行,这个时候 ,如果切面报错,则不会执行

after-throwing:如果切面有异常,会在异常执行完后,会通知执行。

around环绕执行,除非around会调用切面。不会切面将不会执行。

其实这五个属性都有些扩展属性


pointcutpoint-ref一个是配置切面 ,一个是配置切面引用。

method,通知的API

arg-name:由于织入的方法中没有切面信息,可以通知入参的方式进行传递

after-returning中含有returning,这个其实将返回结果传到织入的方法中

after-throwing中含有throwing,将异常传到织入的方法中

 

 

 

 

 

 

猜你喜欢

转载自huayu611.iteye.com/blog/2358351