我们都指定spring的动态代理有两种方式,分别是jdk代理和cglib代理,spring动态代理的策略是:
1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP
2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP
3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换。
当一个对象没有接口的时候,只能用cglib啊,为什么spring还能自动切换呢?
我们都指定spring的动态代理有两种方式,分别是jdk代理和cglib代理,spring动态代理的策略是:
1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP
2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP
3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换。
当一个对象没有接口的时候,只能用cglib啊,为什么spring还能自动切换呢?
这不就是自动切换吗?它判断目标对象是否实现了接口,实现了就用JDK没实现就用cglib,这不正是自动切换吗?你是不是有误解