美文网首页
SpringAOP-Cglib

SpringAOP-Cglib

作者: 墨平语凡 | 来源:发表于2018-06-30 10:13 被阅读0次
    cglib.png

    通过继承实现动态代理


    image.png
    /**
         * @param obj "this", the enhanced object
         * @param method intercepted Method
         * @param args argument array; primitive types are wrapped
         * @param proxy used to invoke super (non-intercepted method); may be called
    **/
    public class DemoMethodInterceptor implements MethodInterceptor{
        @Override
        public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
            System.out.println("before in cglib");
            Object result = null;
            try{
                result = proxy.invokeSuper(obj, args);
            }catch (Exception e){
                System.out.println("get ex:"+e.getMessage());
                throw e;
            }finally {
                System.out.println("after in cglib");
            }
            return result;
        }
    }
    

    客户端代码:

    public class Client {
    
        public static void main(String[] args){
            Enhancer enhancer = new Enhancer();
            enhancer.setSuperclass(RealSubject.class);
            enhancer.setCallback(new DemoMethodInterceptor());
            Subject subject = (Subject) enhancer.create();
            subject.hello();
        }
    }
    
    image.png

    相关文章

      网友评论

          本文标题:SpringAOP-Cglib

          本文链接:https://www.haomeiwen.com/subject/swftuftx.html