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创建的代理对象是目标对象的子类.