spring aop demo

Posted lsy-lsy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring aop demo相关的知识,希望对你有一定的参考价值。

通过aop在目标逻辑代码前后增加其他功能,先创建某个类用于某个功能。例如创建服务员,用来模拟服务功能。

 1 package AOPdemo;
 2 
 3 public class NaiveWaiter implements Waiter 
 4 
 5     @Override
 6     public void greetTo(String name) 
 7         System.out.println("greetTO "+name);
 8     
 9 
10     @Override
11     public void serveTo(String name) 
12         System.out.println("serveTo "+name);
13     
14 
15 

此服务员并没有礼貌语气,通过aop添加礼貌功能,先模拟添加礼貌功能的代码

 1 package AOPdemo;
 2 
 3 import java.lang.reflect.Method;
 4 
 5 import org.springframework.aop.MethodBeforeAdvice;
 6 
 7 public class GreetBeforeAdvice implements MethodBeforeAdvice 
 8 
 9     @Override
10     public void before(Method arg0, Object[] args, Object obj) throws Throwable 
11         
12         String client = (String)args[0];
13         System.out.println("welcome "+client);
14         
15     
16 
17 

此类通过实现MethodBeforeAdvice接口,重写前置增强方法来实现功能。arg0是目标方法的全名,args是目标方法入参,obj是目标实例。

 1 package AOPdemo;
 2 
 3 import org.springframework.aop.framework.ProxyFactory;
 4 
 5 public class WaiterBerforeTest 
 6 
 7     public static void main(String[] args) 
 8         
 9         Waiter target = new NaiveWaiter();
10         
11         GreetBeforeAdvice advice = new GreetBeforeAdvice();
12         
13         ProxyFactory pf = new ProxyFactory();
14         
15         pf.setTarget(target);
16         
17         pf.addAdvice(advice);
18         
19         Waiter waiter = (Waiter)pf.getProxy();
20         waiter.greetTo("kobe");
21         waiter.serveTo("jordan");
22         
23     
24     
25 

上述代码中使用ProxyFactory工厂创建代理对象,从而完成在目标方法上的增强,也可使用spring的配置方式来完成。

1      <!-- aop配置 -->
2      <bean id="target" class="AOPdemo.NaiveWaiter" ></bean>
3      <bean id="greetBeforeAdvice" class="AOPdemo.GreetBeforeAdvice"></bean>
4      
5      <bean id="waiter" class="org.springframework.aop.framework.ProxyFactoryBean" 
6          p:proxyInterfaces="AOPdemo.Waiter"
7          p:interceptorNames="greetBeforeAdvice"
8          p:target-ref="target"
9      />

ProxyFactoryBean在内部使用ProxyFactory来完成。ProxyFactoryBean实现了FactoryBean来创建bean。

属性介绍:proxyInterfaces,指定代理的接口

      interceptorNames,使用的增强

     target-ref,对目标实例进行处理

以上是关于spring aop demo的主要内容,如果未能解决你的问题,请参考以下文章

Spring AOP四种实现方式Demo详解与相关知识探究

Spring AOP四种实现方式Demo详解与相关知识探究

Spring之AOP(面向切面编程)_入门Demo

(转)Spring AOP编程原理Demo

Spring Aop编程的demo

SpringBoot切面Aop的demo简单讲解