¿Quieres escribir tu propio marco? No puedo escribir anotaciones de Java

 

Es genial usar comentarios por un tiempo y siempre es genial

Después de que el desarrollo de back-end de Java entró en la era del cubo de la familia de primavera, el desarrollo de un microservicio que proporciona una interfaz simple de adición, eliminación, modificación y verificación es tan simple como jugar al barro. La operación es feroz, y cuando miro hacia atrás en el código, agrego un montón de anotaciones: @Controller @Autowired @Value, la programación orientada a anotaciones se ha convertido en una operación indispensable para todos.

Imagina que si no hay comentarios, los programadores de Java pueden llorar: sollozo:

Dado que las anotaciones son tan importantes y tan interesantes de usar, ¿conoce el principio de implementación de las anotaciones? Supongo que solo usarás anotaciones y no escribirás anotaciones tú mismo (manualmente divertido).

Bueno, el siguiente contenido lleva a todos a escribir un comentario desde cero y desvelar el misterio del comentario.

Resulta que la anotación no es misteriosa.

Una anotación es una marca o una anotación especial en la lengua vernácula. Si no hay una operación para analizar estas marcas, no es nada.

El formato de la anotación tiene su propia sintaxis especial como una clase o método, que se describirá en detalle a continuación.

¿Cómo analizar la anotación? Esto requiere la poderosa función de reflexión de Java. Todo el mundo debería haber utilizado la reflexión. Puede obtener información diversa de esta clase, como variables miembro, métodos, etc., a través del objeto de clase. ¿Se puede obtener la marca de anotación mediante la reflexión? por supuesto.

Por lo tanto, el principio de anotación es en realidad muy simple. En esencia, la marca de anotación se obtiene dinámicamente a través de la función de reflexión y luego se realizan diferentes operaciones de acuerdo con diferentes anotaciones. Por ejemplo, @Autowired puede inyectar un objeto para asignar una variable.

Viendo esto no es muy inquietante, anímate y escribe un comentario por ti mismo.

Haz un cohete, escribe una nota tú mismo

Para que sea más fácil de entender para todos, aquí hay un escenario: la educación en línea está en llamas. El gerente me pidió que escribiera un módulo para realizar la función de gestión de información de los estudiantes. Teniendo en cuenta el problema de la concurrencia distribuida, el gerente me pidió que agregara bloqueos distribuidos.

El gerente me preguntó cuántos días puedo hacerlo. Dije al menos 3 días. Si el cerebro completa el siguiente código:

Antes de usar anotaciones

Después de que el gerente se fue, estaba pensando, ¿puedo dedicar un día a terminar de escribir y los dos días restantes a escribir un blog? De repente llegó la inspiración, puedo extraer la lógica del código repetitivo y usar anotaciones para implementarlo y guardar el código, jaja, apúrate y escribe.

Después de usar las anotaciones, todo el método es mucho más refrescante. La señorita HR me elogió por escribir bien.

Después de usar anotaciones

El código se ha escrito en la biblioteca y ahora estoy remando y escribiendo en un blog. ¿Es muy simple, elegante e impresionante? ¿Cómo se hace? Se divide en tres pasos: 1 abrir la puerta del refrigerador, 2 poner el elefante y 3 cerrar la puerta del refrigerador. De acuerdo, a lo lejos, todos mirarán hacia abajo.

El primer paso es definir una anotación.

Tres componentes principales de la anotación

Una anotación se puede dividir simplemente en tres partes:

Parte 1: Anotación

La definición de anotación es un poco similar a interfaz, excepto que se agrega un símbolo @ al anterior, este no debe omitirse.

Parte 2: Anotar variables

La sintaxis de las variables de anotación es similar al método definido en la interfaz, con un par de paréntesis después del nombre de la variable, la diferencia es que puede haber valores predeterminados después de la variable de anotación. Además, el valor de retorno solo puede ser un tipo básico de Java, un tipo de cadena o un tipo de enumeración, no un tipo de objeto.

Parte 3: Meta-anotación

Para decirlo claramente, la meta-anotación es una anotación para anotar, si es un poco mareado, este tipo de anotación está preconstruido en el JDK y se puede usar directamente. No importa si no sabes mucho. De todos modos, no hay muchos. Solo hay 4 en total. Vamos a memorizarlo: @Objetivo @Retención @Documentado @Herrado

  • Anotación de destino

Se utiliza para describir el alcance de la anotación, es decir, dónde se puede utilizar la anotación modificada.

Las anotaciones se pueden utilizar para modificar paquetes, tipos (clases, interfaces, enumeraciones, clases de anotaciones), miembros de clase (métodos, constructores, variables de miembro, valores de enumeración), parámetros de método y variables locales (como variables de bucle, parámetros de captura), El uso de @Target al definir la clase de anotación puede aclarar qué objetos se pueden usar para modificar. El rango de valor específico se define en la clase de enumeración ElementType.java.

Por ejemplo, las anotaciones de bloqueo de Redis que escribimos anteriormente solo se pueden usar para métodos.

  • Anotación de retención

Se utiliza para describir el intervalo de tiempo de la retención de la anotación, es decir, el ciclo de vida de la anotación. Se definen tres períodos en la clase de enumeración RetentionPolicy:

public enum RetentionPolicy { 
    SOURCE, // archivo fuente reservado 
    CLASS, // reservado durante el tiempo de compilación, valor predeterminado 
    RUNTIME // reservado durante el tiempo de ejecución, la información de anotación se puede obtener mediante la reflexión 
}

Al igual que la conocida anotación @Override, solo puede permanecer en el archivo de origen y la anotación desaparece después de compilar el código. Por ejemplo, las anotaciones de bloqueo de Redis que escribimos anteriormente se conservan hasta el tiempo de ejecución, y la información se puede obtener mediante la reflexión durante el tiempo de ejecución.

  • Anotación documentada

Se usa para describir si se debe mantener la información de la anotación cuando se usa la herramienta javadoc para generar la documentación de ayuda para la clase, es muy simple y no tiene mucha explicación.

  • Anotación heredada

La anotación modificada por la anotación Inherited tiene herencia. Si la clase padre usa la anotación modificada por @Inherited, sus subclases heredarán automáticamente la anotación.

Bien, hemos definido la anotación en este paso, pero ¿cómo funciona esta anotación? Entonces mira.

El segundo paso es implementar la lógica empresarial de la anotación.

En el primer paso, descubrimos que no hay una lógica de negocios en la anotación definida (@EnableRedisLock), solo algunas variables. No olvide que nuestra anotación es para habilitar la función de bloqueo distribuido de Redis. Entonces, ¿cómo implementa esta anotación el bloqueo y ¿Qué pasa con la función de liberación de bloqueo? Esto requiere que usemos la poderosa función de la reflexión.

 Operación anotada

Con la ayuda de la función de aspecto, la anotación EnableRedisLock se utiliza como punto de contacto. Siempre que esta anotación esté marcada en el método, la lógica del código aquí se ejecutará automáticamente.

Después de obtener el objeto de anotación a través del mecanismo de reflexión, puede ejecutar la lógica común de bloqueo y desbloqueo. Redis implementa bloqueos distribuidos, creo que todos ya están familiarizados con él, por lo que no me quedaré largo aquí.

El tercer paso es usar anotaciones en el código comercial tanto como sea posible

@EnableRedisLock (lockKey = "estudiante", expireTime = 10, timeUnit = TimeUnit.SECONDS, retryTimes = 5) 
public void method1 (estudiante estudiante) { 
    // escribir la lógica empresarial aquí 
}

Simplemente agregue un comentario directamente sobre el método que debe bloquearse. ¿Qué tan fácil es? Úselo en su proyecto rápidamente.

Bien, presentaré yo mismo el contenido de un comentario. ¿Lo has aprendido?

- FINAL -

Después de leer tres cosas ❤️

Si cree que este contenido es muy útil para usted, me gustaría invitarlo a hacerme tres pequeños favores:

  1. Me gusta, repost y tus "me gusta y comentarios" son la motivación de mi creación.

  2. Siga la cuenta pública "Java Fighting Emperor" y comparta conocimientos originales de vez en cuando.

  3. Al mismo tiempo, responda "666" en la cuenta pública para recibir 1,000 preguntas de entrevistas por Internet gratis

Supongo que te gusta

Origin blog.csdn.net/Java0258/article/details/109242683
Recomendado
Clasificación