動的エージェントCGlibインスタンス
7670 ワード
1.委託類;
2.エージェントクラスの実装
3.クライアント:テスト
package 2;
//
public class UserService {
public void create()
{
System.out.println(" ");
}
public void update()
{
System.out.println(" ");
}
}
2.エージェントクラスの実装
1 package 2;
2
3 import java.lang.reflect.Method;
4
5 import net.sf.cglib.proxy.Enhancer;
6 import net.sf.cglib.proxy.MethodInterceptor;
7 import net.sf.cglib.proxy.MethodProxy;
8
9 public class ProxyCglib implements MethodInterceptor{
10 //
11 private Enhancer enhancer=new Enhancer();
12
13 private String name=null;
14
15 public ProxyCglib(String name)
16 {
17 this.name=name;
18
19 }
20 // ,
21 public Object getProxy(Class clazz){
22 //
23 enhancer.setSuperclass(clazz);
24 enhancer.setCallback(this);
25 //
26 return enhancer.create();
27 }
28
29
30
31 public Object intercept(Object arg0, Method arg1, Object[] arg2,
32 MethodProxy arg3) throws Throwable {
33 // TODO Auto-generated method stub
34
35 if(!name.equals("han"))
36 {
37 System.out.println(" ");
38 }
39 else
40 {
41 arg3.invokeSuper(arg0, arg2);
42
43 }
44
45 return null;
46 }
47
48
49 }
3.クライアント:テスト
package 2;
//ref: http://songbo-mail-126-com.iteye.com/blog/968792
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
//
/*
ProxyCglib proxy=new ProxyCglib(" ");
UserService user=(UserService) proxy.getProxy(UserService.class);
user.create(); */
ProxyCglib proxy2=new ProxyCglib("han");
UserService user2 =(UserService) proxy2.getProxy(UserService.class);
user2.create();
}
}