博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
aop编程之前置通知
阅读量:4982 次
发布时间:2019-06-12

本文共 3255 字,大约阅读时间需要 10 分钟。

aop( Aspect-Oriented Programming)前置通知原理案例讲解

编程步骤;

  1. 定义接口
  2. 编写对象(被代理的对象即目标对象)
  3. 编写通知(前置通知即目标方法调用前调用)
  4. 在beans.xml文件中配置

                4.1. 配置  被代理对象即目标对象

                4.2. 配置通知

                4.3. 配置代理对象  其是ProxyFactoryBean的对象实例        

                      4.3.1 配置代理接口集

                      4.3.2 织入通知

                      4.3.3 配置被代理对象

直接上代码

1.分别创建两个接口如下:

TestServiceInterface.java接口

1 package com.LHB.aop;2 3 public interface TestServiceInterface {4 5     public void sayHello();6 }

TestServiceInterface2.java接口

1 package com.LHB.aop;2 3 public interface TestServiceInterface2 {4 5     public void sayBye();6 }

2. 创建被代理对象(目标对象)类testService.java,该类实现了TestServiceInterface和TestServiceInterface2两个接口方法

1 package com.LHB.aop; 2  3 public class testService implements TestServiceInterface,TestServiceInterface2 { 4  5     private String name; 6     public String getName() { 7         return name; 8     } 9     public void setName(String name) {10         this.name = name;11     }12     @Override13     public void sayHello() {14         // TODO Auto-generated method stub15 16         System.out.println("hello " + name);17     }18     @Override19     public void sayBye() {20         // TODO Auto-generated method stub21         System.out.println("Bye "+ name);22     }23 24 }

3. 编写前置通知即MyMethodBeforeAdvice.java,该类实现了MethodBeforeAdvice接口中的before(method method,Object[] args,Object target )方法。

注意:在实现该接口的时候需要导入spring-aop-5.0.1.RELEASE.jar包(本案例在spring5.0.1版本下实现的)

1 package com.LHB.aop; 2  3 import java.lang.reflect.Method; 4  5 import org.springframework.aop.MethodBeforeAdvice; 6  7 public class MyMethodBeforeAdvice implements MethodBeforeAdvice { 8  9     /**10      * 功能:该函数将在目标函数执行前首先执行11      * method:被调用方法名字12      * args:给method传递的参数13      * target:被代理的目标对象14      */15     @Override16     public void before(Method method, Object[] args, Object target)17             throws Throwable {18         // TODO Auto-generated method stub19         //method.getName()方法将得到目标函数的函数名称20         System.out.println("记录日志...." + method.getName());21     }22 23 }

4.通过new/File新建一个bean.xml配置文件,开始配置前置通知

1 
2
9 10
11
12
13
14
15
16
17
18
19
20
21
com.LHB.aop.TestServiceInterface
22
com.LHB.aop.TestServiceInterface2
23
24
25
26
27
28
MyMethodBeforeAdvice
29
30
31
32 33
34 35

5. 创建一个测试类APP

1 package com.LHB.aop; 2  3 import org.springframework.context.ApplicationContext; 4 import org.springframework.context.support.ClassPathXmlApplicationContext; 5  6 public class App { 7  8     public static void main(String[] args) { 9         // TODO Auto-generated method stub10         ApplicationContext ac = new ClassPathXmlApplicationContext("com/LHB/aop/beans.xml");11         TestServiceInterface tsi = (TestServiceInterface) ac.getBean("ProxyFactoryBean");12         tsi.sayHello();13         ((TestServiceInterface2)tsi).sayBye();14         15     }16 17 }

6.  运行结果

 

 

转载于:https://www.cnblogs.com/lihuibin/p/7955947.html

你可能感兴趣的文章
Selenium-ActionChainsApi接口详解
查看>>
UI进阶
查看>>
java.io.Serializable 序列化接口
查看>>
asp.net get中文传值乱码
查看>>
python 基本文件操作
查看>>
java开发注解大全
查看>>
日期、时间、数字格式转换
查看>>
什么是网络环路问题?
查看>>
autofac使用笔记
查看>>
面试题1—选取同一个字符第一不重复的字符
查看>>
新一代网站群的分享
查看>>
台州 OJ 2676 Tree of Tree 树状 DP
查看>>
Linux 下安装 MATLAB
查看>>
react
查看>>
JQUERY1.9学习笔记 之基本过滤器(七) 语言选择器
查看>>
Computer Vision的尴尬 转载自 林达华
查看>>
尝试MVP模式
查看>>
可拖拽的ListBox
查看>>
queue
查看>>
cppgl:一个对现代OpenGL的C++封装
查看>>