spring aop注解Demo
----
-------------------------------------代理类-----------------------------------
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;@Aspectpublic 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 blocke.printStackTrace();}System.out.println("around()....");}@AfterReturning("sing2()")public void afterReturn(){System.out.println("afterReturn()......");}}
----------------------------------被代理类--------------------------------------
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);return name;}}
------------------------------------xml加一句---------------------
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
------------------------------------测试-----------------------
import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {ApplicationContext app =new ClassPathXmlApplicationContext("proxy/spring/agent/annotation/application.xml"); MySinger singer =(MySinger)app.getBean("singer");singer.sing2();System.out.println("main"+"...."+ singer.ss2("周杰伦"));}}