1. 程式人生 > >spring動態代理 jdk,cglib

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建立的代理物件是目標物件的子類.