spring aop注解Demo (一)

2014-11-24 11:54:46 · 作者: · 浏览: 48

----

-------------------------------------代理类-----------------------------------

[html]
import javax.sound.midi.SysexMessage;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
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 AgentProxy {
@Pointcut("execution(* proxy.spring.agent.annotation.*.*(..))")
public void sing2(){

}


@Before("sing2()")
public void before(){
System.out.println("before()........");
}

@After("sing2()")
public void after(){
System.out.println("after()......");
}

@AfterThrowing("sing2()")
public void afterThrow(){

System.out.println("after()......");
}

@Around("sing2()")
public void around(ProceedingJoinPoint p){
//得到参数
Object[] o= p.getArgs();
for (int i = 0; i < o.length; i++) {
Object object = o[i];
System.out.println(object);
}

try {
//必须加,不加就不执行原函数
p.proceed();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("around()....");
}

@AfterReturning("sing2()")
public void afterReturn(){

System.out.println("afterReturn()......");
}
}

import javax.sound.midi.SysexMessage;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.AfterThrowing;
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 AgentProxy {
@Pointcut("execution(* proxy.spring.agent.annotation.*.*(..))")
public void sing2(){

}


@Before("sing2()")
public void before(){
System.out.println("before()........");
}

@After("sing2()")
public void after(){
System.out.println("after()......");
}

@AfterThrowing("sing2()")
public void afterThrow(){

System.out.println("after()......");
}

@Around("sing2()")
public void around(ProceedingJoinPoint p){
//得到参数
Object[] o= p.getArgs();
for (int i = 0; i < o.length; i++) {
Object object = o[i];
System.out.println(object);
}

try {
//必须加,不加就不执行原函数
p.proceed();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("around()....");
}

@AfterReturning("sing2()")
public void afterReturn(){

System.out.println("afterReturn()......");
}
}
----------------------------------被代理类--------------------------------------

[java]
import org.aspectj.lang.annotation.Pointcut;

public class MySinger {


public void sing2(){
System.out.println("我唱歌");
}


public String ss2(String name){
System.out.println("MySinger"+"...."+name);