I know Spring AOP use JDK dynamic proxy and CGLIB.
when target implents Interface -> JDK dynamic proxy
else -> CGLIB.
As you can see why there was this reason in the past version, CGLIB currently has all its shortcomings secured, and in terms of performance, it is superior to the JDK method.
Why would you still use the JDK for the target that implements the interface though? Making all the targets CGLIB seems to have more advantages.