----
-------------------------------------代理类-----------------------------------
[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);