Spring Boot – Diferencia entre AOP y AspectJ

Spring Boot está construido en la parte superior del resorte y contiene todas las características del resorte. Y se está convirtiendo en el favorito de los desarrolladores en estos días debido a su rápido entorno listo para producción que les permite concentrarse directamente en la lógica en lugar de luchar con la configuración y la instalación. Spring Boot es un marco basado en microservicios y crear una aplicación lista para producción lleva muy poco tiempo. Las siguientes son algunas de las características de Spring Boot:

  • Permite evitar la configuración pesada de XML que está presente en primavera.
  • Proporciona fácil mantenimiento y creación de puntos finales REST
  • Incluye servidor Tomcat incorporado
  • La implementación es muy fácil, los archivos war y jar se pueden implementar fácilmente en el servidor tomcat

POA

Entendamos algunas terminologías:

  • Aspecto: Los distintos módulos independientes se denominan aspectos. Por ejemplo , el aspecto de registro.
  • Puntos de unión: este es un punto donde se pueden inyectar aspectos para realizar una tarea específica.
  • Consejo: Es el bloque de código real, que se ejecutará antes o después de la ejecución del método.
  • Pointcut: es un conjunto de uno o más puntos de unión donde se ejecutará el código real. Los puntos de corte se especifican mediante expresiones o patrones.

Vea el siguiente ejemplo: 

Java

@Aspect
public class LoggingAspectPointCutExample{
  @PointCut("execution(*java11.fundamentals.*.*(...))")
  private void logData() {}
}

En el ejemplo anterior, hemos utilizado algunas anotaciones. Entendamos sus significados.

  1. @Aspect: esta anotación especifica que la clase contiene métodos de asesoramiento
  2. @PointCut: esta anotación especifica el JoinPoint donde se debe ejecutar el consejo.
  3. ejecución (*java11.fundamentals.*.*(..)): Esto especifica en qué métodos se deben aplicar los consejos dados 
  4. Introducción: Esto permite la inclusión de nuevos métodos, campos o atributos a las clases existentes. También se conoce como declaraciones entre tipos en AspectJ . En otras palabras, con una introducción, un aspecto puede afirmar objetos recomendados para implementar una interfaz específica. También puede proporcionar una implementación de esta interfaz.
  5. Objeto de destino: Especifica el objeto que está siendo asesorado por uno o más aspectos. Este objeto siempre será un objeto proxy, ya que Spring AOP se implementa mediante proxies de tiempo de ejecución. 
  6. Proxy AOP: Denota el objeto para implementar los contratos de aspecto.
  7. Weaving: Es un proceso para crear un objeto aconsejado al vincular uno o más aspectos con otros objetos o tipos de aplicaciones. Hay varias formas en que se puede hacer, como compilar, cargar o ejecutar. Spring AOP realiza el uso en tiempo de ejecución.

AspectoJ

AspectJ se refiere a un estilo de declaración de aspectos como clases regulares de Java anotadas con anotaciones. Spring interpreta las mismas anotaciones que AspectJ 5, utilizando una biblioteca proporcionada por AspectJ para el análisis y la comparación de cortes puntuales. Sin embargo, el tiempo de ejecución de AOP sigue siendo Spring AOP puro y no depende del compilador o weaver de AspectJ.

Diferencia entre AOP y AspectJ

Primavera AOP

AspectJ AOP

No pretende ser una solución AOP completa; solo se puede aplicar a beans administrados por un contenedor Spring. AspectJ es la tecnología AOP original que tiene como objetivo proporcionar una solución AOP completa.
Hace uso del tejido en tiempo de ejecución. Hace uso de tres tipos diferentes de tejido: tejido en tiempo de compilación, tejido posterior a la compilación, tejido en tiempo de carga.

Es un marco AOP basado en proxy. Esto significa que para implementar aspectos en los objetos de destino, creará proxies de ese objeto. Esto se logra usando cualquiera de dos maneras:

Proxy dinámico JDK, proxy CGLIB.

Por otro lado, esto no hace nada en tiempo de ejecución ya que las clases se compilan directamente con aspectos.

Y así, a diferencia de Spring AOP, no requiere ningún patrón de diseño.

Es mucho más lento que AspectJ.  Tiene mejor rendimiento.
Es fácil de aprender y aplicar. Es más complicado que Spring AOP.

Publicación traducida automáticamente

Artículo escrito por ridhi9697 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *