2011-07-08 20 views
12

I que tienen dificultades para comprender la importancia y los beneficios de las anotaciones y también lo han hecho dos preguntas con respecto a ellos:¿Cómo funcionan las anotaciones internamente en Java o en cualquier otro lenguaje de programación?

  1. ¿Cuáles son los beneficios de Anotaciones en comparación con la configuración de XML?
  2. ¿Cómo funcionan las anotaciones internamente?
  3. ¿Es lo suficientemente justo decir que la anotación se une fuertemente mientras que con la aplicación de solicitud de configuración XML se acopla libremente?

Agradecería los pros y los contras de la comparación con la Configuración XML con el ejemplo, por lo que sería mucho más útil para mí entender.

Atentamente.

Respuesta

0

Ambas anotaciones y descriptores XML se utilizan para describir algunos metadatos sobre el código normal. La principal diferencia es que en el caso de las anotaciones, solo tiene que tratar con un archivo que incluye código y metadatos. También es una gran ventaja de las anotaciones, ya que reduce el número de partes móviles y aumenta la productividad.

Por otro lado, el inconveniente de las anotaciones es que unen el código y el sistema o marco que opera utilizando esas anotaciones. Eso hace que sea más difícil separarlos en el futuro.

Por ejemplo, si usa Anotaciones de Hibernate, enlaza los objetos de su modelo con Hibernate. Si elige cambiar a un marco diferente, tendrá que extraer las anotaciones de Hibernate del código.

Pero, en la práctica, no es muy probable que cambie los marcos con tanta frecuencia. Por lo general, hay muchas otras razones por las que cambiar el marco en la base de código existente puede ser difícil. Muy a menudo las anotaciones son una buena opción.

En cuanto a cómo funcionan, las anotaciones son parte del lenguaje y se procesan mediante el compilador y otras herramientas y, dependiendo de la retención, se pueden incluir en bytecode producido para usar en tiempo de ejecución. En última instancia, le corresponde al consumidor decidir cómo usar las anotaciones.

4

Para su primera pregunta,

En lo personal, me siento, hay dos criterios de

  1. Pueden anotaciones simplificar los metadatos?

    Si las anotaciones no reducen la cantidad de metadatos que debe proporcionar (en la mayoría de los casos sí lo hacen), no debe usar la anotación.

  2. ¿Pueden los cambios en el comportamiento de los metadatos en su aplicación?

    De lo contrario, puede sentirse cómodo aplicando el cambio mientras el sistema está en producción. Los archivos de configuración externa son el mejor lugar para los metadatos en este caso porque no desea tener que volver a compilar su código para realizar el cambio.

Para su segunda pregunta,


importantes:

+0

no responde la pregunta, estoy tratando de entender cómo funcionan realmente las anotaciones internas y cuáles son los beneficios de usarlas, ¿el uso de ellas siempre es correcto o hay escenarios en que las configuraciones xml ganan el juego? – Rachel

+0

Echa un vistazo al enlace: http://stackoverflow.com/questions/2798181/what-are-annotations-and-how-do-they-actually-work-for-frameworks-like-spring también, incluido en mi respuesta. –

+0

en respuesta a su segundo comentario '¿Pueden los cambios en el comportamiento de ruptura metadatos en su application', esta será siempre verdad en la mayoría de los casos derecho coz utilizando anotaciones estás estrecho acoplamiento de la aplicación? – Rachel

0

Para responder a la primera pregunta, IMO el mayor beneficio es el potencial para la integración del compilador. Puedo escribir un procesador de anotaciones que pueda validar algunas semánticas relacionadas con la aplicación de la anotación. Ese tipo de verificación en tiempo de compilación no es posible (o al menos sería mucho más difícil) si la misma información fuera parte de un documento XML.

Para responder a la segunda pregunta, las anotaciones no tiene que "trabajar" internamente, por sí mismo, en el sentido de que no tienen la semántica de ejecución inherentes. Son entidades de nivel de origen que pueden o no retenerse en el archivo de clase.Se puede procesar durante la compilación de la fuente, y si se conservaron en el archivo de clase, se puede acceder a través de la reflexión.

+0

anotaciones IIRC, Spring todos tienen una '' RetentionPolicy' de RUNTIME', para que puedan ser leídos reflexivamente. El marco Spring puede determinar qué se debe inyectar examinando los archivos de clase. –

Cuestiones relacionadas