spring动态代理 jdk,cglib

JDK动态代理是要实现接口的,而CGLB不需要直接

例如:

        ConfigurableApplicationContext context = SpringApplication.run(App.class, args);
        context.getBean(IUserDao.class).add("jibohai", "jjjjjj");
        System.out.println(context.getBean(IUserDao.class).getClass());
        context.close();

spring.aop.proxy-target-class=false  表示使用的是jdk动态代理

JDK动态代理:

1.能够继承静态代理的全部优点.并且能够实现代码的复用.
2.动态代理可以处理一类业务.只要满足条件 都可以通过代理对象进行处
理.
3.动态代理的灵活性不强.
4.JDK 的动态代理要求代理者必须实现接口, , 否则不能生成代理对象.

spring.aop.proxy-target-class=true  表示使用的是CGLIB动态代理

Cglib动态代理:

1.不管有无接口都可以创建代理对象.
2.cglib创建的代理对象是目标对象的子类.

猜你喜欢

转载自blog.csdn.net/lala12d/article/details/85098887