ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

Spring中AOP实例详解(1/2)

来源:网络整理     时间:2015-12-05     关键词:Spring,Annotation,Application

本篇文章主要介绍了"Spring中AOP实例详解",主要涉及到Spring,Annotation,Application方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: Spring中AOP实例详解 需要增强的服务假如有以下service,他的功能很简单,打印输入的参数并返回参数。@Servicepublic class Sim...

Spring中AOP实例详解

需要增强的服务

假如有以下service,他的功能很简单,打印输入的参数并返回参数。

@Service
public class SimpleService {
    public String getName(String name) {
        System.out.println(get name is:  + name);
        return name;
    }
} 

定义切面和切点

@Component
@Aspect
public class L
ogAspect {
    // 定义切点
    @Pointcut(within(com.ydoing.service..*))
    // @Pointcut(execution(* com.ydoing.service.*.*(..)))
    public void pointCut() {
    } 
}

Before增强处理

    // 定义Before增强处理
    // 在目标方法调用之前执行增强处理
    @Before(pointCut())
    public void before(JoinPoint jp) {
        // 获取连接点传入参数
        // Object args = jp.getArgs();
        System.out.println(Before增强处理--execute before target method call);
    } 

测试输出:

Before增强处理--execute before target method call
get name is: Bob

AfterReturning增强

    // 在目标方法调用之后执行增强处理
    @AfterReturning(pointcut = pointCut(), returning = ret)
    public void afterReturning(JoinPoint jp, Object ret) {
        System.out.println(AfterReturnin增强处理--execute after target method call, return value is : + ret);
    }

测试输出:

get name is: Bob
AfterReturnin增强处理--execute after target method call, return value is :Bob

Around增强

    @Around(pointCut())
    public void around(ProceedingJoinPoint jp) {
        System.out.println(Around增强--around start...);
        Object[] args = jp.getArgs();

        // 修改目标方法传入的参数
        args[0] = around_add_ + args[0];
        try {
            System.out.println(修改传入参数后执行输出:);
            jp.proceed(args);
        } catch (Throwable e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println(Around增强--around end);
    }

输出:

相关图片

相关文章