Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 28258|Respuesta: 2

[Fuente] Operación práctica: AOP en Spring Boot modifica dinámicamente el valor del parámetro de solicitud

[Copiar enlace]
Publicado en 6/11/2021 12:15:55 | | | |
Requisitos: El proyecto necesita modificar dinámicamente los parámetros de la solicitud, asignar valores a los parámetros de la solicitud según los permisos del usuario actual, antes de que los parámetros entren en el método del controlador, debe completarse la modificación de los parámetros de la solicitud y, cuando el controlador llama a la capa de servicio, los parámetros de la solicitud pueden usarse como condiciones para consultar y modificar los datos. Hay dos casos de parámetros de solicitud:

  • Para usuarios con altos privilegios, puedes usar los valores reales de los parámetros solicitados
  • Para personas con permisos solo parciales, los valores de los parámetros de solicitud se modifican dinámicamente en función de la información vinculada al usuario actual


Al principio quería implementarlo mediante un filtro, pero era demasiado engorroso serializar y desserializar el contenido de la petición, y también requería mucho juicio lógico y pérdida de rendimiento. Afortunadamente, Spring ofrece funcionalidad orientada a cara de AOP, que puede implementarse con código sencillo.

En primer lugar, el proyecto Maven pom.xml necesita introducir el paquete spring-boot-starter-aop, de la siguiente manera:

Una vez introducido el paquete, podemos usar la función AOP, a través de@Aspectanotación.

Aspect soporta 5 tipos de anotaciones de notificación:

@Before: Prenotificación, que se ejecuta antes de ejecutar el método

@After: Post-notificación, ejecutada después de que el método se ejecute

@AfterRunning: Devuelve una notificación, que se ejecuta después de que el método devuelve un resultado

@AfterThrowing: Notificación de excepciones, después de que el método lanza una excepción

@Around: Notificaciones de wraparound, alrededor de la ejecución del método

Crea una clase envoltoria de petición genérica Request.java:

Crea una nueva clase de datos UserInfo.java solicita específica:

Si el encabezado de solicitud actual tiene un appid, el valor del parámetro de solicitud appId se modificará; de lo contrario, el parámetro de solicitud no se modificará; el código es el siguiente:

Crea un nuevo controlador HomeController y añade una interfaz con un parámetro de solicitud que contenga Request<UserInfo>, el código es el siguiente:

En el caso de pruebas sin el encabezado de solicitud appId, el parámetro de solicitud appId es el valor real y no ha sido modificado, como se muestra en la siguiente figura:



Si intentas añadir la cabecera de solicitud appId, puedes ver que el parámetro de solicitud appId ha sido modificado con éxito, como se muestra en la siguiente figura:



Finalmente, adjunta el código fuente:El inicio de sesión del hipervínculo es visible.





Anterior:Utiliza iPerf3 para probar las velocidades de comunicación de la red de los dispositivos
Próximo:Instalar el software iDRAC Service Module en VMware ESXi
 Propietario| Publicado en 6/11/2021 12:21:32 |
En Spring AOP, la lógica de negocio se centra únicamente en el propio negocio, dividiendo el registro, las estadísticas de rendimiento, el control de seguridad, el procesamiento de transacciones, la gestión de excepciones, etc., del código de lógica de negocio, y al separar estos comportamientos, esperamos poder separarlos en métodos que no guíen la lógica de negocio, y luego cambiar estos comportamientos sin afectar el código de la lógica de negocio.
Publicado en 15/3/2023 11:11:04 |
zsdfghjkvbjnm
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com