首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

反照实现AOP 动态代理模式(Spring AOP 的实现原理)

2012-09-03 
反射实现AOP 动态代理模式(Spring AOP 的实现原理)?package com.proxy.aop.test?? public class Hello im

反射实现AOP 动态代理模式(Spring AOP 的实现原理)

?package com.proxy.aop.test;
?
? public class Hello implements IHello {
?
????? public void sayHello(String name) {
???????? System.out.println("Hello " + name);
???? }
?
?}
?

14???????? }
15????????? if (level.equals(Level.DEBUGE)) {
16???????????? System.err.println(new Date() + " " + context);
17???????? }
18???? }
19
20 }
21
Level.java
1 package com.proxy.aop.test;
2
3? public enum Level {
4???? INFO,DEBUGE;
5 }
6
那我们去写个测试类看看,代码如下:
Test.java
1 package com.proxy.aop.test;
2
3? public class Test {
4????? public static void main(String[] args) {
5???????? IHello hello = new HelloProxy(new Hello());
6???????? hello.sayHello("Doublej");
7???? }
8 }
9
运行以上代码我们可以得到下面结果:
?Tue Mar 04 20:57:12 CST 2008 sayHello method start .
?Hello Doublej
?2008-3-4 20:57:12 sayHello method end!

?7???? }
?8????? public void sayGoogBye(String name) {
?9???????? System.out.println(name+" GoodBye!");
10???? }
11 }
12

37????????????
38???????????? //JVM通过这条语句执行原来的方法(反射机制)
39???????????? result = method.invoke(this.delegate, args);
40???????????? //执行原来的方法之后记录日志
41???????????? Logger.logging(Level.INFO, method.getName() + " Method Start!");
42????????? } catch (Exception e) {
43???????????? e.printStackTrace();
44???????? }
45???????? //返回方法返回值给调用者
46???????? return result;
47???? }
48
49 }
50

???? }
?
????? public void start(Method method) {
???????? Logger.logging(Level.INFO, method.getName() + " Method Start!");
???? }
?
?}
?

?9???? }
10
11????? public void start(Method method) {
12???????? Logger.logging(Level.INFO, method.getName() + " Method Start!");
13???? }
14
15 }
16

?

热点排行