zoukankan      html  css  js  c++  java
  • Enhance基本例子

    太晚了,有些东西没有补充,回头再补上。
    先上Demo
    1.要执行的方法
    1. package enhancerTest;
    2. /**
    3. * Created by LiuSuSu on 2017/3/26.
    4. */
    5. public class UserService {
    6. public void doxx(){
    7. System.out.println("do...");
    8. }
    9. }
    2. 代理类
    1. package enhancerTest;
    2. import org.springframework.cglib.proxy.MethodInterceptor;
    3. import org.springframework.cglib.proxy.MethodProxy;
    4. import java.lang.reflect.Method;
    5. /**
    6. * Created by LiuSuSu on 2017/3/26.
    7. */
    8. public class CglibCallBackUserService implements MethodInterceptor {
    9. /**
    10. * cglib调用的
    11. *
    12. * @param o 调用对象
    13. * @param method 调用的方法
    14. * @param args 参数
    15. * @param methodProxy 代理的方法
    16. * @return
    17. * @throws Throwable
    18. */
    19. @Override
    20. public Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
    21. System.out.println("before " + method.getName());
    22. //注意invoke代理的是自己,这是一个递归,死循环
    23. //Object obj= methodProxy.invoke(o, args);
    24. Object obj = methodProxy.invokeSuper(o, args);
    25. System.out.println("after " + method.getName());
    26. return obj;
    27. }
    28. }
    3.测试方法
    1. package enhancerTest;
    2. import org.springframework.cglib.proxy.Enhancer;
    3. /**
    4. * Created by LiuSuSu on 2017/3/26.
    5. */
    6. public class EnhanceTest {
    7. public static void main(String[] args) {
    8. Enhancer enhancer = new Enhancer();
    9. enhancer.setSuperclass(UserService.class);
    10. enhancer.setCallback(new CglibCallBackUserService());
    11. UserService service = (UserService) enhancer.create();
    12. service.doxx();
    13. System.out.println("over");
    14. }
    15. }
    4.运行结果
    before doxx
    do...
    after doxx
    over

    灵活性上远远大于传统的代理模式。
  • 相关阅读:
    1. Go的安装和第一行代码
    合工大OJ 1344
    __int64与long long、long的区别
    合工大OJ 1343
    如何快速查找下载java项目所需jar包
    油田勘测(深度优先算法,广度优先算法)
    图的创建(邻接矩阵)
    五大常用算法总结
    前序遍历,中序遍历,后序遍历(树的深度优先算法),层序遍历(树的广度优先算法)
    IE CSS Hack
  • 原文地址:https://www.cnblogs.com/LiuChunfu/p/6624769.html
Copyright © 2011-2022 走看看