美文网首页
AOP实现原理:2.CGLIB的使用

AOP实现原理:2.CGLIB的使用

作者: 繁天涯 | 来源:发表于2019-05-31 15:35 被阅读0次

1.概念:CGLIB是一种字节码增强框架,在运行时,创建目标类子类,从而对目标类进行增强。
2.代码:切面类不变
2.1 创建一个目标类StudentService

public class StudentService {
    public void delete(){
        System.out.println("删除学生");
    }

    public void add(){
        System.out.println("添加学生");
    }

    public void update(){
        System.out.println("更新学生信息");
    }
}

2.2 在UserServiceFactory中增加一个createStudentService方法。

//    2.CGLIB实现代理
    public static StudentService createStudentService(){
        //1.创建目标对象target
        StudentService studentService = new StudentService();
        //2.声明切面类对象
        MyAspect aspect = new MyAspect();
        //3.创建增强对象
        Enhancer enhancer = new Enhancer();
        //设置父类
        enhancer.setSuperclass(studentService.getClass());
        //设置回调(拦截)
        enhancer.setCallback(new MethodInterceptor() {
            @Override
            public Object intercept(Object o, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
                aspect.before();
                System.out.println(o.getClass());
                System.out.println(methodProxy);
                System.out.println("拦截...");
               // Object obj = method.invoke(studentService, args);
                Object obj = methodProxy.invokeSuper(o,args);

                aspect.after();
                System.out.println("obj:"+obj);
                System.out.println("-----------------------");

                return obj;
            }
        });

        // 创建代理对象
        StudentService s = (StudentService) enhancer.create();
        return s;
    }

2.3 测试

    @Test
    public void Test(){
        StudentService studentService = UserServiceFactory.createStudentService();
        studentService.add();
        studentService.update();
        studentService.delete();
    }

显示结果


image.png

相关文章

  • AOP实现原理:2.CGLIB的使用

    1.概念:CGLIB是一种字节码增强框架,在运行时,创建目标类子类,从而对目标类进行增强。2.代码:切面类不变2....

  • [java][SpringAOP]

    为什么会有AOP 实现AOP原理 AOP通知类型 AOP在Spring中配置

  • Spring(一)

    First And MOST Important Spring AOP的实现原理和场景? 什么是AOP?AOP--...

  • 深入理解spring的AOP

    AOP的原理 AOP的实现有两种方式,一种是使用代理,一种是直接修改.class(即使用CGLib等类库)。 问题...

  • spring源码解析-AOP

    前几篇介绍了spring IOC的实现原理,从这篇开始介绍AOP的相关源码 一个简单的AOP使用例子 spring...

  • 2018-09-16

    AOP的XML配置: AOP的先关术语: Spring底层的AOP实现原理 动态代理: JDK动态代理:只能对实现...

  • Spring事务传播机制

    1.Spring事务执行的原理; Spring事务使用AOP的机制实现,会在@Transcactional注解修饰...

  • spring-aop

    aop概念aop概念aop术语AOP实现方式1、spring-aop(使用xml文件实现AOP)2、AspectJ...

  • 基于注解的SpringAOP切面编程实例

    1,AOP简介 面相切面编程(AOP),可以实现例如日志打印、身份认证,权限管理,安全监测。AOP的实现原理是基于...

  • Spring_AOP_02——实现原理

    本文主要讲实现AOP的 代理模式原理,以及静态代理,动态代理的区别和具体实现。 对SpringAOP的概念和使用,...

网友评论

      本文标题:AOP实现原理:2.CGLIB的使用

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