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.
- @Aspect: esta anotación especifica que la clase contiene métodos de asesoramiento
- @PointCut: esta anotación especifica el JoinPoint donde se debe ejecutar el consejo.
- ejecución (*java11.fundamentals.*.*(..)): Esto especifica en qué métodos se deben aplicar los consejos dados
- 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.
- 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.
- Proxy AOP: Denota el objeto para implementar los contratos de aspecto.
- 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. |