Aunque Java no le permite expresar seguridad nula en su sistema de tipos, Spring Framework ahora incluye las
siguientes anotaciones en el paquete org.springframework.lang
para que pueda declarar API y campos en
ser nulo seguro:
-
@Nullable
: una anotación que indica que un determinado parámetro, valor de retorno o campo puede sernull
. -
@NonNull
: una anotación que indica que un parámetro, valor de retorno o campo en particular no puede sernull
(no es necesario para parámetros/valores de retorno y campos donde anotaciones se aplican)@NonNullApi
y@NonNullFields
respectivamente). -
@NonNullApi
: una anotación a nivel de paquete que declara un valor no nulo como la semántica predeterminada para parámetros y valores de retorno. -
@NonNullFields
: una anotación a nivel de paquete que declara un valor no nulo como la semántica predeterminada para los campos.
El propio Spring Framework hace un uso efectivo de estas anotaciones, pero también se pueden usar en cualquier proyecto Java basado en Spring para declarar API seguras para nulos y, opcionalmente, campos seguros para nulos. La capacidad de nulidad para argumentos de tipo genérico, varargs y elementos de matriz aún no se admite, pero se debe agregar en una versión futura. Para obtener la información más reciente, consulte SPR-15942. Se espera que las declaraciones de variables anulables se refinen entre las versiones de Spring Framework, incluidas las menores. La posibilidad de nulos de los tipos utilizados dentro del cuerpo de un método está fuera del alcance de esta función.
Usar ejemplos
Además de proporcionar una declaración explícita de nulidad a la API de Spring Framework, los IDE (como IDEA o
Eclipse) pueden usar estas anotaciones para proporcionar advertencias útiles relacionadas con la seguridad de
nulos, evitando así NullPointerException
en tiempo de ejecución.
También se utilizan para hacer que la API Spring sea segura para nulos en proyectos de Kotlin, ya que Kotlin admite de forma nativa seguridad nula. Puede encontrar más información en la documentación de soporte de Kotlin.
Metaanotaciones JSR-305
Las anotaciones de Spring están metaanotadas utilizando anotaciones de JSR 305 (no implementado por el momento, pero es un JSR ampliamente utilizado). Las metaanotaciones de JSR-305 permiten a los proveedores de herramientas como IDEA o Kotlin brindar soporte para seguridad nula de manera genérica sin tener que codificar el soporte de anotaciones en Spring.
No es necesario ni recomendado agregar una dependencia JSR-305 al classpath de su proyecto para aprovechar la API
segura para nulos de Spring. Solo para proyectos como bibliotecas basadas en Spring que usan anotaciones de
seguridad nula en su código base, debe agregar com.google.code.findbugs:jsr305:3.0.2
con la
configuración compileOnly
de Gradle o alcance provided
de Maven para evitar
advertencias de compilación.