Hay una gran cantidad de cambios en el Framework para la versión 3, por lo que esta publicación de blog no puede cubrirlos todos. Para obtener todos los detalles del lanzamiento, consulte la documentación . Estos son los aspectos más destacados.
SIN IMPLEMENTACIÓN DE FLUJOS REACTIVOS PREDETERMINADOS
Las versiones anteriores del marco Micronaut incluían RxJava2 como una dependencia transitiva, y RxJava2 era la implementación de flujos reactivos utilizada para implementar muchas características dentro del marco. El marco de Micronaut ahora ya no expone ninguna implementación de flujos reactivos de forma predeterminada. Además, todos los usos de RxJava2 internamente se han reemplazado con Project Reactor.
Una vez que se lanzó RxJava3, tuvimos que tomar la decisión de actualizar a RxJava3 o cambiar a Reactor. Creemos que Reactor es la mejor opción porque tiene la funcionalidad para mantener el estado dentro del flujo reactivo y es más ampliamente adoptado por la comunidad.
Recomendamos que las aplicaciones que actualmente usan RxJava2 cambien a Project Reactor porque eso generará menos clases en la ruta de clases en tiempo de ejecución y menos problemas potenciales con la propagación del contexto y la conversión de tipo reactivo. Si el cambio no es posible o factible, simplemente agregue una dependencia en el
Para las aplicaciones que utilizan Project Reactor o RxJava3, este cambio no tendrá ningún impacto.
HERENCIA DE ANOTACIONES
Esta versión incluye un cambio en la forma en que se heredan las anotaciones. En resumen, todas las anotaciones se heredaron de las interfaces o clases principales en versiones anteriores. Ahora se debe anotar una anotación
La lista completa de anotaciones que se han modificado de esta manera está disponible en nuestra documentación .
VALIDACIÓN EN TIEMPO DE COMPILACIÓN HTTP
La validación de los componentes relacionados con HTTP en tiempo de compilación se ha trasladado a un nuevo módulo,
ANOTACIONES DEL CICLO DE VIDA DE YAKARTA
El marco de Micronaut ahora admite
MEJORAS DEL COI
INYECCIÓN DE YAKARTA
Debido a las restricciones de marcas registradas impuestas en el espacio de nombres javax. *, El marco de Micronaut ha cambiado de
INYECCIÓN POR GENÉRICOS
Ahora es posible calificar una inyección de un tipo por sus argumentos genéricos. Una clase que usa argumentos de tipo se puede apuntar especificando esos genéricos en el tipo de argumento.
@Inject
public Vehicle(Engine<V8> engine) {
...
}
ANOTACIONES CALIFICATIVAS
Los miembros de las anotaciones de calificador ahora se utilizan para calificar el bean que se solicita. Anteriormente, solo se usaba la presencia de la anotación.
LÍMITE DE TIPOS INYECTABLES
Ahora es posible hacer que los beans no se puedan buscar por el tipo que son, sino por un súper tipo o interfaz. Puede usar esto para evitar que una clase de implementación sea buscada directamente y forzar a que el bean sea buscado por la interfaz que implementa. Por ejemplo:
@Bean(typed = Engine.class)
class V8Engine implements Engine {
}
INTERCEPCIÓN DE AOP
Los constructores y los métodos del ciclo de vida ahora se pueden interceptar para permitir el asesoramiento de AOP sobre esos métodos. Anteriormente, a los métodos de ciclo de vida les gustaba
BEANS DE FÁBRICA
Las clases de fábrica ahora pueden producir frijoles a partir de campos con la
RETRABAJO DEL FILTRO DEL SERVIDOR
En el marco 2 de Micronaut, los filtros del servidor podrían haber sido llamados varias veces en el caso de que se lanzara una excepción, o algunas veces no en absoluto si el error se produjo antes de la ejecución de la ruta. Esto también permitió que los filtros manejen las excepciones lanzadas desde las rutas.
Los filtros han cambiado en Micronaut framework 3 para ser llamados siempre exactamente una vez para cada solicitud en todas las condiciones. Las excepciones ya no se propagan a los filtros; en su lugar, la respuesta de error resultante se pasa a través del flujo reactivo.
INTROSPECCIONES Y REFLEXIÓN GRAALVM
En versiones anteriores del marco Micronaut, agregar
Para restaurar este comportamiento para una clase individual, agregue la
CONFIGURACIÓN DE RECURSOS DE GRAALVM
GraalVM requiere que todos los recursos, por ejemplo
CAMBIOS IMPORTANTES
ANOTACIONES DE NULABILIDAD
El marco de Micronaut ya no se envía con
CAMBIOS PERSONALIZADOS EN EL ALCANCE DEL BEAN
Se han rediseñado los ámbitos personalizados para que las implementaciones puedan invocar más fácilmente los
El marco de Micronaut ahora también rastreará cualquier bean dependiente que no defina un alcance y lo invoque de manera proactiva
RUTAS DE ERROR DE ESTADO
Los métodos anotados con
PRIORIDAD DE RUTA DE ERROR
Anteriormente, si no se podía satisfacer una ruta o
DESAPROBACIONES
La gran mayoría de las clases y métodos que estaban en desuso en 2.x se han eliminado.
TIPO DE INYECCIÓN DE FÁBRICA
Anteriormente, era posible utilizar el tipo de implementación devuelto por una fábrica para buscar un bean. Ahora solo se pueden inyectar el tipo de retorno y cualquiera de sus clases o interfaces principales.
EXECUTORSERVICE INJECTION
Ya no es posible inyectar
ACTUALIZACIÓN FÁCIL
Para los usuarios de Java, ahora existe una integración con OpenRewrite . OpenRewrite cambia su código fuente para actualizar la aplicación de Micronaut framework 2 a 3. Esto se hace a través de un complemento de Gradle o Maven que debe agregarse a su compilación. Para obtener instrucciones sobre cómo comenzar, consulte la documentación de actualización .
FUENTE: https://micronaut.io/2021/08/18/micronaut-framework-3-released/