1 基于xml配置的实现:
如果要使用spring的aop功能 ,那么在applicationContext.xml配置文件的头文件中要加上aop相关xsd
2 在applicationContext.xml配置如下:
<bean id = "transactionDemo" class = "com.vst.defend.communal.aop.TransactionDemo" />
<aop:config>
<aop:pointcut expression="execution(* com.vst.defend.communal.service.*.*.*(..))" id="p1" />
<aop:aspect ref = "transactionDemo">
<aop:before method="startTransaction" pointcut-ref="p1" />
<aop:after-returning method="commitTransaction" pointcut-ref="p1"/>
</aop:aspect>
</aop:config>
3 编写TransactionDemo类
com.vst.defend.communal.transaction;
import org.aspectj.lang.ProceedingJoinPoint;
import com.yangxin.core.pojo.User;
public class TransactionDemo {
//前置通知
public void startTransaction(){
System.out.println("begin transaction ");
}
//后置通知
public void commitTransaction(){
System.out.println("commit transaction ");
}
//环绕通知
public void around(ProceedingJoinPoint joinPoint) throws Throwable{
System.out.println("begin transaction");
joinPoint.proceed();
System.out.println("commit transaction");
}
}
二:基于注解方式:
第一步同xml的配置方式
next:在applicationContext.xml配置如下:
<!-- 注解的方式开启aop -->
<bean id = "transactionDemo" class = "com.vst.defend.communal.aop.TransactionDemo" />
<aop:aspectj-autoproxy />
next:编写TransactionDemo类
package com.vst.defend.communal.aop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
public class transactionDemo {
@Pointcut(value="execution(* package com.vst.defend.communal.service.*.*.*(..))")
public void point(){
System.out.println("哈哈哈 我就是aop啦");
}
@Before(value="point()")
public void before(){
System.err.println("transaction begin");
}
@AfterReturning(value="point()")
public void after(){
System.out.println("transaction end");
}
@Around("point()")
public void around(ProceedingJoinPoint joinPoint)throws Throwable{
System.out.println("transaction begin");
joinPoint.proceed();
System.out.println("transaction commit");
}
}
参考帖子来源:http://www.cnblogs.com/cndota/p/6129244.htm