Red de conocimiento informático - Problemas con los teléfonos móviles - Método asincrónico de primavera @Async

Método asincrónico de primavera @Async

En Spring Boot, podemos simplemente usar la anotación @Async para cambiar la función sincrónica original a una función asincrónica.

Habilitar métodos: agregue la anotación @EnableAsync en la clase de inicio o clase de configuración, luego agregue @Async en el método o clase y agregue la anotación en la clase para indicar que el método en la clase se ha implementado llamadas asincrónicas.

Cómo funciona:

Spring escaneará el Bean cuando escanee métodos para ver si contiene la anotación @async. Si es así, Spring generará dinámicamente una subclase del Bean. a la que llamamos clase Proxy, que hereda el Bean que escribimos y luego le inyecta la clase proxy. Spring mantiene una cola. Coloca los métodos que deben ejecutarse en la cola y espera a que el grupo de subprocesos lea la cola y complete la ejecución del método, completando así la función asincrónica. Spring proporciona un grupo de subprocesos predeterminado, Spring proporciona un grupo de subprocesos predeterminado, ThreadPoolTaskExecutor, que admite la configuración manual de propiedades.

Notas:

1. Al llamar a métodos en la misma clase, agregar la anotación @async no es válido. La razón es que cuando estás en la misma clase, la llamada al método se ejecuta en la clase, Spring no puede interceptar esta llamada al método y no se ejecutará en la clase proxy.

2. Puede dar lugar a dependencias circulares. Spring por sí solo resolverá el problema de dependencia circular, pero debido a que @Async usa el patrón proxy, cuando Spring verifica si el caché de segundo nivel y el objeto original son iguales y descubre que no son iguales, Spring lanzará una excepción.

3. No se puede obtener el contexto de la solicitud.