读书人

spring aop注脚Demo

发布时间: 2013-04-02 12:35:26 作者: rapoo

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("周杰伦"));}}


读书人网 >软件架构设计

热点推荐