使用cglib,asm 对接口进行拦截,这里需要调用Invoke方法

        final IUserService userService=new UserService();
        
        Enhancer enhancer=new Enhancer();
        enhancer.setSuperclass(IUserService.class);
        enhancer.setCallback(new MethodInterceptor() {
            
            @Override
            public Object intercept(Object arg0, Method arg1, Object[] arg2,
                    MethodProxy arg3) throws Throwable {
                System.out.println(arg1.getName());
                
                return arg3.invoke(userService, arg2);
            }
        });
        IUserService proxy= (IUserService) enhancer.create();
        System.out.println(proxy.getNameById(3));
View Code

相关文章: