Spring AOP实例

  1. Spring的AOP部分
  2. AOP:面向切面的编程
  3. Aspect: (问题等的)方面,切面
  4. Orient: 适应
  5. Programing: 编程
  6. Java通过接口来实现AOP开发的功能
  7. org.springframework.aop包下
  8. MethodBeforeAdvice: 在主体方法执行之前来完成某项工作
  9. 实现方法 before()
  10. AfterReturningAdvice:在主体方法执行之后来完成某项工作
  11. 在org.springframework.aop.framework包下
  12. ProxyFactoryBean
  13. ----------------------------------
  14. 接口 IPlayer.java
  15. package test;
  16. public interface IPlayer {
  17.     public String say(String name);
  18.     
  19. }
  20. People.java
  21. package test;
  22. public class People implements IPlayer {
  23.     public String say(String name) {
  24.         
  25.         return "Hello :" +name;
  26.     }
  27. }
  28. DemoBefore.java:
  29. package test;
  30. import java.lang.reflect.Method;
  31. import org.springframework.aop.MethodBeforeAdvice;
  32. public class DemoBefore implements MethodBeforeAdvice {
  33.     public void before(Method method, Object[] args, Object target)
  34.             throws Throwable {
  35.         System.out.println("------------");
  36.         String temp=method.getName();  //得到方法名
  37.         String arg1=(String)args[0]; //得到参数
  38.         String tar=target.getClass().getName();
  39.         System.out.println(tar+":"+temp+"  "+arg1);
  40.     }
  41. }
  42. DemoAfter.java:
  43. package test;
  44. import java.lang.reflect.Method;
  45. import org.springframework.aop.AfterReturningAdvice;
  46. public class DemoAfter implements AfterReturningAdvice {
  47.     public void afterReturning(Object result, Method method, Object[] args,
  48.             Object target) throws Throwable {
  49.         String methodName=method.getName();  //得到方法名
  50.         String res=result.toString();  //得到结果
  51.         String uid= args[0].toString();   //得到参数
  52.         System.out.println(methodName+"--"+res+"---"+uid);
  53.     }
  54. }
  55. Test.java:
  56. package test;
  57. import org.springframework.context.*;
  58. import org.springframework.context.support.*;
  59. public class Test {
  60.       public static void main(String[] args) {
  61.         ApplicationContext ctx=new ClassPathXmlApplicationContext("beans.xml");
  62.         IPlayer temp=(IPlayer) ctx.getBean("pb");
  63.         String str= temp.say("liming");
  64.         System.out.println(str);
  65.     }
  66. }
  67. beans.xml:
  68. <beans>
  69. <bean id="pe" class="test.People" />
  70. <bean id="demobe" class="test.DemoBefore" />
  71. <bean id="demoaf" class="test.DemoAfter" />
  72.     <bean id="pb" class="org.springframework.aop.framework.ProxyFactoryBean" >
  73.         <property name="proxyInterfaces" value="test.IPlayer" />
  74.         <property name="target" ref="pe" />
  75.         <property name="interceptorNames">
  76.             <list>
  77.                 <value>demobe</value>
  78.                 <value>demoaf</value>
  79.             </list>
  80.         </property>
  81.     </bean>
  82. </beans>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值