一、Spring使用注解进行AOP的开发
1,引入相关的jar包
2,编写目标类
public class CustiomImp implements CustomInter{
@Override
public void save() {
System.out.println("保存客户。。。。。");
}
@Override
public void update() {
System.out.println("修改客户。。。。。");
}
}
3,配置目标类并开启注解自动代理
<!-- 开启自动代理 -->
<aop:aspectj-autoproxy/>
<!-- 配置目标对象 -->
<bean id="customImp" class="com.itcast.test1.CustiomImp"/>
5,AspectJ的AOP的注解
@Aspect:定义切面类的注解
通知类型
*@Before :前置通知
*@AfterReturing:后置通知
*@Around:环绕通知
*@After:最终通知
*@AfterThrowing:异常抛出通知
*@Pointcut:定义切入点的注解。
6,编写切面类
@Aspect
public class AspectAnno {
@Before(value = "AspectAnno.fun()")
public void log() {
System.out.println("记录日志。。。。。");
}
@After(value="AspectAnno.fun()")
public void after() {
System.out.println("最终日志。。。。。");
}
@Around(value="AspectAnno.fun()")
public void around(ProceedingJoinPoint point) throws Throwable{
System.out.println("环绕通知前。。。。。");
//手动强制调用
point.proceed();
System.out.println("环绕通知后。。。。。");
}
/**
* 自定义切入点
*
*/
@Pointcut(value="execution(public * com.itcast.*.CustiomImp.save())")
public void fun(){
}
}
7,配置切面
<bean id="myAspectAnno" class="com.itcast.test1.AspectAnno" />
8,测试代码
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Test1 {
@Resource(name = "customImp")
private CustomInter customInter;
@Test
public void run1() {
customInter.save();
customInter.update();
}
}
二、源码