Las aplicaciones de Java se desarrollan en varias capas, para aumentar la seguridad , la lógica comercial separada, la lógica de persistencia, etc. Una aplicación típica de Java tiene tres capas, a saber, la capa web, la capa comercial y la capa de datos .
- Capa web: esta capa se utiliza para proporcionar los servicios al usuario final mediante la API REST o la aplicación web.
- Capa de negocios: Toda la lógica de negocios de la aplicación se escribe y maneja en esta capa.
- Capa de datos: esta capa se utiliza para implementar la lógica de persistencia de la aplicación.
Nota: Las clases de Java cuyas instancias se almacenan en las tablas de la base de datos se denominan clases persistentes. Capa de datos utilizada para manejar la lógica persistente.
AOP (Programación Orientada a Aspectos)
AOP es un paradigma de programación cuyo objetivo principal es aumentar la modularidad al permitir la separación de preocupaciones transversales. AOP hace esto agregando un comportamiento adicional al código existente sin modificar el código en sí. Proporciona funcionalidades para agregar nuevo código y comportamiento por separado.
El AOP nos brinda la flexibilidad para definir todas las preocupaciones comunes en una clase y podemos definir dónde se usan todas estas preocupaciones y cómo se usan en una clase sin modificar su código existente y aplicar las nuevas características. Esta clase con todas las preocupaciones transversales se modulariza en una clase específica llamada Aspecto . Para usar AOP, necesitamos implementar la responsabilidad de aspecto en nuestra clase llamada Consejo .
La clase de aspecto nos proporciona la flexibilidad para:
- Defina cada inquietud en una sola clase en lugar de distribuir las inquietudes por todo el código base.
- La capa empresarial solo contiene la lógica primaria, toda la lógica secundaria y las preocupaciones se colocan en una sola clase, aspecto.
Hay algunas terminologías clave en la programación orientada a aspectos que se muestran en forma de tabla a continuación:
Terminologías | Acción realizada |
---|---|
Aspecto | Es un módulo que proporciona inquietudes transversales al resumir los consejos y puntos de corte . Una aplicación puede tener cualquier número de aspectos en ella. Para usarlo, necesitamos anotar una clase con la anotación @Aspect . |
Consejo | Es una acción que se realiza antes o después de la ejecución del método. Una acción es un bloque de código que se invoca durante la ejecución de un programa. El marco Spring AOP admite cinco tipos de consejos antes , después , después de devolver , después de lanzar y alrededor de los consejos . El consejo se toma para unir puntos . El consejo se aplica sobre el objeto de destino . |
Cortes de punta | Los puntos de corte son el conjunto de puntos de unión donde se ejecuta el consejo. Estos puntos de corte se definen mediante la expresión o el patrón. |
Unir puntos | Es un lugar en una aplicación donde se aplica el aspecto AOP. Un punto de unión puede ser la ejecución de un método, el manejo de excepciones, etc. |
Objeto de destino | Es un objeto donde se aplica el consejo. Estos objetos de destino son proxy |
proxy | Los objetos de destino se envían mediante proxy , lo que significa que durante el tiempo de ejecución los métodos de destino se anulan y, según la configuración del método, el consejo se incluye en el objeto de destino. |
Costura | El proceso de vincular la aplicación con el aspecto se denomina tejido. Se puede hacer en tiempo de carga, tiempo de compilación y tiempo de ejecución. |
¿Por qué necesitamos AOP?
En las aplicaciones web, cada una de las capas (capa web, comercial y de datos) son responsables de diferentes tareas y realizan estas tareas individualmente. Pero hay algunos aspectos comunes que se aplican a cada capa, como la seguridad, el almacenamiento en caché, la validación, etc. Estos aspectos comunes se conocen como preocupaciones transversales .
Recuerde: las preocupaciones transversales se implementan en varios lugares de una aplicación y afectan a toda la aplicación.
La implementación de estas preocupaciones transversales en cada módulo por separado hace que el código sea largo y difícil de administrar. Para superar este problema, se introduce la Programación Orientada a Aspectos. En el cual, implementamos estas preocupaciones transversales como un aspecto y definimos puntos de corte (conjunto de puntos de unión) donde se deben aplicar estos aspectos.