SpringAop的使用,使用xml和@注解配置两种方式
需要jar包:
AOP执行顺序:
前置通知,是在方法前执行吗?
环绕通知执行,进入方法...
执行save()方法...
@后置通知,是在方法后执行吗?
最终通知 执行...
@异常通知,程序出现异常了吗?(出现异常通知则后置通知不执行)
环绕通知,退出方法...
========================================================
第一步:使用注解方式建立切面类,代码如下:
package com.newer.test;
import java.lang.reflect.Method;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
/**
* 测试Spring AOP机制 <br/>
* 使用注解方式 配置切面 [@Aspect]
* @author RSun
* 2012-2-21上午12:07:17
*/
@Aspect
public class TestAOP {
}
* 解析:
* @Pointcut("execution(* com.newer.service..*.*(..) ")
* @Pointcut("execution(* com.newer.action..*.user*LoginOut())")
* execution(* com.newer.service..*.*(..) <br/>
* execution(1 com.newer.service..2.3(..) <br/>
* 1. 表示返回值类型,例:java.lang.String,*号代表任何返回类型 ,!void表示必须有返回值
* 2. 表示类,* 号代表对所有类拦截 <br/>
* 3. 表示方法,* 号代表所有方法 <br/>
* 4. service.. 这两个点代表可以对service下的子包进行拦截 <br/>
* 5. (..) 表示方法的参数可以可无,一个也行,多个亦可,例如:(java.lang.String,..)
*
* 注解引用切入点的写法
* @Before("userLogin()")
* @Before("userLogin() && userLoginOut()")
* @Before("execution(* com.vveoss.examination.dailyExam.submitPaper(..))")
========================================================
第二步:xml方式的普通切面类,代码如下:
package com.newer.test;
import org.aspectj.lang.ProceedingJoinPoint;
/**
* 测试Spring AOP机制 <br/>
* 使用xml方式配置
* @author RSun
* 2012-2-21上午12:07:17
*/
public class TestAOPXml {
}
========================================================
第三步:applicationContext.xml配置,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
</beans>
总结:
|