首页 > 编程语言 > 详细

JAVA之AOP

时间:2018-03-11 18:21:15      阅读:183      评论:0      收藏:0      [点我收藏+]

AOP(面向切面编程),官方定义就不讲了,可自行百度。按照我自己的理解就是,将代码片段动态的注入某一个已知的代码片段某一处。这样做的好处就是,在不改变原有代码情况下,又能扩充原有业务的功能。

AOP有两种实现方式:

1.动态代理

例子:

假设我们向给一个类的方法入口和出口各打印一行日志,但我们有不能改变原有代码。

技术分享图片
 1 package com;
 2 
 3 public interface AlgorithmItf
 4 {
 5 void add();
 6 
 7 void del();
 8 
 9 void update();
10 
11 void find();
12 }
13 
14 package com;
15 
16 public class Algorithm implements AlgorithmItf
17 {
18 public void add()
19 {
20 System.out.println("add...");
21 }
22 public void del()
23 {
24 System.out.println("del...");
25 }
26 public void update()
27 {
28 System.out.println("update...");
29 }
30 public void find()
31 {
32 System.out.println("find...");
33 }
34 }
35 
36  
37 
38 package com;
39 
40 import java.lang.reflect.InvocationHandler;
41 import java.lang.reflect.Method;
42 import java.lang.reflect.Proxy;
43 
44 public class AopDyProxy<T> implements InvocationHandler
45 {
46 private T o;
47 
48 public T createInstance(T t)
49 {
50 o=t;
51 return (T)(Proxy.newProxyInstance(o.getClass().getClassLoader(), o.getClass().getInterfaces(), this));
52 }
53 
54 @Override
55 public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
56 {
57 Object re=null;
58 System.out.println(method.getName()+" enter");
59 re=method.invoke(o, args);
60 System.out.println(method.getName()+" exit");
61 return re;
62 }
63 public static void main(String[] args)
64 {
65 AopDyProxy<AlgorithmItf> p=new AopDyProxy<AlgorithmItf>();
66 AlgorithmItf a=p.createInstance(new Algorithm());
67 a.add();
68 a.update();
69 }
70 
71 }
View Code

 

2.静态代理

 

JAVA之AOP

原文:https://www.cnblogs.com/zincredible/p/8544947.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!