La configuración de anotaciones tiene muchas ventajas sobre la configuración XML:
Puede hacer un uso completo del mecanismo de reflexión de Java para obtener información de la estructura de clases, lo que puede reducir efectivamente el trabajo de configuración. Por ejemplo, cuando utilizamos anotaciones JPA para configurar el mapeo ORM, no necesitamos especificar nombres de atributos de PO, tipos y otra información. Si los campos de la tabla de relaciones y los nombres y tipos de atributos de PO son consistentes, ni siquiera es necesario escribir el atributo de tarea. Información de mapeo: porque esta información se puede obtener a través del mecanismo de reflexión de Java.
Los comentarios y el código Java se encuentran en un archivo, mientras que la configuración XML utiliza un archivo de configuración independiente. La mayor parte de la información de configuración no se ajustará después de que se desarrolle el programa. Si la información de configuración y el código Java se colocan juntos, esto ayuda a mejorar la cohesión. el programa. Con archivos de configuración XML independientes, los programadores a menudo necesitan cambiar constantemente entre archivos de programa y archivos de configuración al escribir una función. Esta incoherencia en el pensamiento reducirá la eficiencia del desarrollo.
Por lo tanto, en muchos casos, la configuración de anotaciones es más popular que la configuración XML, y la configuración de anotaciones tiene una tendencia adicional de popularidad. Una mejora importante de Spring 2.5 es la introducción de muchas clases de anotaciones. Ahora puede utilizar la configuración de anotaciones para completar la mayoría de las funciones de configuración XML.
Dónde se aplican la configuración de anotaciones y la configuración XML
Con estas anotaciones del COI, ¿podemos abandonar por completo el método de configuración XML original? La respuesta es no. Hay varias razones:
La configuración de anotaciones no es necesariamente superior a la configuración XML. Si la dependencia del Bean es fija (como qué clases DAO utiliza el Servicio) y esta información de configuración no se ajustará durante la implementación, entonces la configuración de anotaciones es mejor que la configuración XML; por el contrario, si esta dependencia no se ajustará durante la implementación; Cuando se producen ajustes, la configuración XML es obviamente mejor que la configuración de anotaciones, porque las anotaciones son ajustes al código fuente de Java y es necesario reescribir el código fuente y volver a compilarlo antes de poder implementar el ajuste.
Si Bean no es una clase escrita por usted mismo (como JdbcTemplate, SessionFactoryBean, etc.), no se implementará la configuración de anotaciones y la configuración XML es la única forma disponible.
La configuración de anotaciones tiende a ser a nivel de clase, mientras que la configuración XML puede ser más flexible. Por ejemplo, en comparación con la anotación de transacción @Transaction, la configuración de la transacción utilizando el espacio de nombres aop/tx es más flexible y sencilla.
Por lo tanto, al implementar aplicaciones, a menudo necesitamos usar la configuración de anotaciones y la configuración XML al mismo tiempo. Para configuraciones a nivel de clase que no cambiarán, se puede dar prioridad a la configuración de anotaciones para clases y configuraciones de terceros que sean fáciles de usar. ajustar, se debe dar prioridad al uso de la configuración XML. Spring fusionará la metainformación de estos dos métodos de configuración antes de implementar la creación y la inyección de beans.
resumen
Spring ha brindado un fuerte soporte para la configuración de anotaciones desde 2.1, y la función de configuración de anotaciones se ha convertido en uno de los aspectos más destacados de Spring 2.5. El uso razonable de la configuración de anotaciones Spring 2.5 puede reducir efectivamente la carga de trabajo de configuración y mejorar la cohesión del programa. Pero esto no significa que la configuración XML tradicional desaparezca. La configuración XML todavía tiene funciones insustituibles en la configuración de clases de beans de terceros, así como en la configuración de contenidos como fuentes de datos, grupos de caché, clases de plantillas de operación de capa de persistencia, gestión de transacciones, etc. estado.