Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Por qué el principio AOP de Spring utiliza dos implementaciones, JDKProxy y Cglib?

¿Por qué el principio AOP de Spring utiliza dos implementaciones, JDKProxy y Cglib?

Esta vez lo estudié yo mismo y, por cierto, lo resumiré en mi blog:

La diferencia entre los dos proxies de Spring, JDK y CGLIB:

El proxy dinámico de Java usa el mecanismo de reflexión para generar una implementación La clase anónima de la interfaz proxy se procesa llamando a la clase invokeHandler antes de llamar a un método específico;

El proxy dinámico cglib utiliza el paquete de código abierto asm para agregar archivos de clase al proxy archivo de clase de objeto;

El proxy dinámico cglib utiliza el paquete de código abierto asm para cargar el archivo de clase de objeto proxy y procesarlo modificando su subclase de código de bytes.

1gt; Si el objeto de destino implementa la interfaz, el proxy dinámico JDK se utilizará de forma predeterminada para implementar AOP

2gt Si el objeto de destino implementa la interfaz, cglib puede ser; forzado a ser usado;

3gt; Si el objeto de destino no implementa la interfaz, debe usar la biblioteca cglib y Spring cambiará automáticamente entre el proxy dinámico JDK y cglib; p>4gt; Si el objeto de destino Si la interfaz no está implementada, se debe usar la biblioteca cglib y Spring cambiará automáticamente entre el proxy dinámico JDK y cglib;

5gt; implementar la interfaz, se debe utilizar la biblioteca cglib.