http://blog.csdn.net/xiaose7613/article/details/4301989
1.定义一个被通知的对象(目标对象)POJO
TestBean.java
package com.spring.aspect;
public class TestBean {
public void add(){
System.out.println("add to db");
}
}
2.定义一个通知对象(advisor)
TestAdvice.java
package com.spring.aspect;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
/**
* @Description: 定义一个通知对象(advisor)
* @Author : yc.min
*/
@Aspect
public class TestAdvice {
@Pointcut("execution(* TestBean.add(..))")
public void perform(){
}
/**
* 增加事务到指定的类
*/
@Around("perform()")
public void addTransaction(ProceedingJoinPoint pjp) {
System.out.println("set autocommit false");
try {
pjp.proceed();
System.out.println("commit transaction");
} catch (Throwable throwable) {
System.out.println("rollback transaction");
}
}
}
3.配置XML代码
aop.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:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <aop:aspectj-autoproxy/> <bean id="testBean" class="com.spring.aspect.TestBean"/> <bean id="testAdvice" class="com.spring.aspect.TestAdvice"/> </beans>
4.写测试代码测试
Test.java
package com.spring.aspect;
import java.io.IOException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) throws IOException {
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"com/spring/aspect/aop.xml");
TestBean t = (TestBean) ctx.getBean("testBean");
t.add();
}
}
5.测试结果
- set autocommit false
- add to db
- commit transaction
6,依赖jar包
aspectjweaver-1.6.12.jar
http://minyongcheng.iteye.com/admin/blogs/2104253