spring aop

原创 2015年11月18日 15:59:43

Aspect(切面):集成了各种通知(Adivce)
JoinPoint(连接点):方法的调用
Adivce(通知):对切入点的额外处理。around,before,after,after-returning等
Pointcut:可以插入通知的连接点
ProceedingJoinPoint 只能处理环绕通知

配置文件:

<?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"
    xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
              http://www.springframework.org/schema/context
      http://www.springframework.org/schema/context/spring-context.xsd
            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
            http://www.springframework.org/schema/tx 
           http://www.springframework.org/schema/tx/spring-tx.xsd">
  <context:annotation-config />
  <context:component-scan base-package="com.xll"/>
  <bean id="teacher" class="com.xll.Teacher"/>
  <bean id="aspectTest" class="com.xll.AspectTest"/>
  <aop:config >
    <aop:pointcut expression="execution(* com.xll.Teacher.*(..))" id="joinpoint"/>
    <aop:aspect ref="aspectTest">
        <aop:around method="around" pointcut-ref="joinpoint"/>
        <aop:before method="before" pointcut-ref="joinpoint"/>
        <aop:after method="after" pointcut-ref="joinpoint"/>
        <aop:after-returning method="returnAfter" pointcut-ref="joinpoint" returning="re"/>
    </aop:aspect>
  </aop:config>
</beans>

切面代码:

package com.xll;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
public class AspectTest {   
    public Object around(ProceedingJoinPoint pp) throws Throwable
    {
        System.out.println("around增强处理开始,为方法参数赋值!");
        Object[] args = pp.getArgs();
        if(args[0] != null)
            args[0] = "小明";
        Object obj = pp.proceed(args);
        return obj; 
    }
    public void before(JoinPoint jp){
        System.out.println("方法" + jp.getSignature().getName() + "即将被执行!");
    }
    public void after(JoinPoint jp){
        System.out.println("方法" + jp.getSignature().getName() + "已经执行完了!");
    }
    public void returnAfter(JoinPoint jp , Object re){
        System.out.println("我到底在哪?" + re);
    }
}

最终运行结果:

环绕通知中需要有返回值,afterreturning的re中才会有值!
顺序是:around,before,after,afterreturning
其中环绕通知可以对目标方法的中参数进行修改

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

spring-aop-4.0.3.RELEASE-source.jar

  • 2017年10月21日 17:30
  • 321KB
  • 下载

Spring-Aop源码实现

  • 2016年09月12日 17:00
  • 99KB
  • 下载

Spring 之AOP AspectJ切入点语法详解(最全面、最详细。)

6.5  AspectJ切入点语法详解 6.5.1  Spring AOP支持的AspectJ切入点指示符        切入点指示符用来指示切入点表达式目的,,在Spring AOP...

spring----AOP实现

  • 2017年01月06日 17:40
  • 1.54MB
  • 下载

(9) 使用Spring的注解方式实现AOP入门 以及 细节

1:AOP的概念 Aspect(切面):指横切性关注点的抽象即为切面,它与类相似,只是两者的关注点不一样,类是对物体特征的抽象,而切面横切性关注点的抽象. joinpoint(连接点):所谓连...

spring AOP日志框架

  • 2017年06月25日 21:22
  • 46KB
  • 下载

Spring aop代码

  • 2017年06月30日 19:58
  • 15KB
  • 下载

使用Spring的注解方式实现AOP

Spring对AOP的实现提供了很好的支持。下面我们就使用Spring的注解来完成AOP做一个例子。 首先,为了使用Spring的AOP注解功能,必须导入如下几个包。aspectjrt.jar,as...

Spring Aop的简单实现

  • 2017年09月12日 17:14
  • 16KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:spring aop
举报原因:
原因补充:

(最多只允许输入30个字)