Entendiendo la anotación de Java uno

     Todo el mundo debería estar familiarizado con las anotaciones de Java, es decir, Anotación. Mientras esté involucrado en el desarrollo de back-end de Java, entonces debe haber estado expuesto a Spring. Muchas funciones en el marco de Spring se implementan mediante anotaciones. Por ejemplo: el @Autowired más común, inyecta los objetos en el contenedor de resorte en la clase y úsalo directamente sin crear una determinada clase con frecuencia; también está @RequestMapping, a través de esta anotación, el controlador del procesador en el resorte coincide con el frente Luego, la solicitud se ingresa en el controlador de ejecución. En cuanto a las anotaciones, mucha gente suele usarlo muy bien, solo una @, muchas cosas no necesitan ser configuradas o escritas por sí mismas, pero tengo muchas ganas de explicar las anotaciones y la realización, y me siento muy confundido.

Veamos primero la explicación oficial del comentario:

从JDK5开始,Java增加对元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解为代码里的特
殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有
代码和逻辑的情况下在源代码中嵌入补充信息。

Para tal explicación, generalmente solo hay una palabra "halo". Y quizás mucha gente ni siquiera tenga ganas de leer. En términos generales, siempre que expliquemos un sustantivo abstracto, usaremos una analogía con algo que se usa comúnmente en la vida real para entenderlo mejor, entonces la pregunta es, ¿cuál es la similitud de las anotaciones?

Para los que usamos frecuentemente anotaciones, todos sabemos que luego de agregar anotaciones, se puede identificar el código, y luego la correspondiente verificación, comparación o inyectar la clase, es decir, la anotación es como un signo, puesto ahí, lo sabrá tan pronto como lo vea "¡Oye, es un comentario, marca la verificación!"

Por tanto, todo el mundo suele comparar las anotaciones con un letrero o una etiqueta, que es llamativo y fácil de identificar, lo que facilita su comprensión.

Por supuesto, en esta comparación, algunas de las funciones de las anotaciones pueden no estar completamente analógicas, así que lo pensé nuevamente y encontré algo que es muy similar a las anotaciones, es decir, ¡la caja de empaque!

En primer lugar, debe haber una etiqueta en la caja que le recuerde qué es y qué hace, similar a una etiqueta. En segundo lugar, las cajas de embalaje hoy en día son más exquisitas, como las cajas de pastel de luna. Generalmente, el mismo tipo de caja solo puede contener un tipo de pastel de luna. Si se empacan otros tipos, puede ser más grande o más pequeño, lo que no es adecuado. desperdicia espacio y hace que los consumidores se sientan incómodos.

Echemos un vistazo a las anotaciones. La primera es el logotipo, para dejar en claro que el papel de esta anotación es similar a la introducción del producto en la caja. La segunda es la función. La anotación se usa generalmente para la verificación o comparación de métodos o atributos, y la forma única de la caja de empaque es la verificación de objetos extraños. ¡No se permiten comparaciones e inconsistencias! Es como cuando se solicita un método o se obtiene el valor de un atributo, no hay forma de ingresar el método u obtener el valor de un atributo si no se cumple esta anotación.

Bueno, hablemos de las anotaciones comunes de Java a continuación.

En primer lugar, comencemos con la anotación @Autowired más familiar.

@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER,
 ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
    boolean required() default true;
}

Puede ver que las anotaciones en java usan @interface, y hay tres anotaciones encima de la anotación @Autowired, entonces, ¿qué es esto?

Hablando de esto, primero debemos hablar de meta-anotaciones, entonces, ¿qué es meta-anotación?

La metaanotación es una anotación que se puede anotar en una anotación, o la metaanotación es una anotación básica, pero se puede aplicar a otras anotaciones. En otras palabras, se agrega otra capa de empaque a la caja.

Hay 5 tipos de metaetiquetas: @Retention, @Documented, @Target, @Inherited y @Repeatable.

@Retencion

Retención significa período de retención en inglés. Cuando se aplica @Retention a una anotación, explica el tiempo de supervivencia de la anotación.

Su valor es el siguiente:

    La anotación RetentionPolicy.SOURCE solo está reservada en la fase de código fuente, y se descartará e ignorará cuando el compilador compile.
    La anotación RetentionPolicy.CLASS solo se conserva hasta que la compilación esté en curso y no se cargará en la JVM.
    La anotación RetentionPolicy.RUNTIME se puede retener hasta que el programa se esté ejecutando, se cargará en la JVM, de modo que se puedan obtener cuando el programa se esté ejecutando.

@Documento

Como sugiere el nombre, esta meta-anotación debe estar relacionada con el documento. Su función es poder incluir los elementos de las anotaciones en el Javadoc.

Destino significa un destino y @Target especifica dónde se aplica la anotación.

Puede comprender que cuando @Target anota una anotación, la anotación se limita al escenario de la aplicación.

Análogamente a la caja de empaque, la caja de empaque original es donde desea publicarlo donde desee, pero debido a la existencia de @Target, su uso es muy específico, como métodos de empaque, clases, parámetros de método, etc. . @Target tiene los siguientes valores

    ElementType.ANNOTATION_TYPE puede anotar una anotación
    ElementType.CONSTRUCTOR puede anotar los métodos de construcción
    ElementType.FIELD lata annotate atributos
    ElementType.LOCAL_VARIABLE puede anotar variables locales
    ElementType.METHOD puede anotar métodos
    ElementType.PACKAGE puede anotar un paquete Anotar
    ElementType.PARAMETER a los parámetros Anotación en un método
    ElementType.TYPE Anotar un tipo, como clase, interfaz, enumeración

@Heredado

Heredado significa herencia, pero no significa que la anotación en sí pueda heredarse, sino que si una superclase está anotada por anotaciones @Inherited, entonces si su subclase no se aplica a ninguna anotación, entonces esta subclase La clase hereda las anotaciones de la super clase

@Repetible

Repetible naturalmente significa repetible. @Repeatable solo se agregó en Java 1.8, por lo que es una característica nueva.

¿Qué tipo de anotación se aplicará varias veces? Por lo general, el valor de la anotación puede ser múltiple al mismo tiempo.

Por ejemplo, una persona es tanto programador como gerente de producto, y también es maestro.

Eso es todo por hoy, la próxima vez hablaré sobre la adquisición simple de anotaciones (a través de la reflexión).

Supongo que te gusta

Origin blog.csdn.net/zsah2011/article/details/90610600
Recomendado
Clasificación