java - Mejores prácticas al usar las anotaciones de Spring 3
annotations spring-3 (5)
Estoy buscando algunas mejores prácticas al usar las anotaciones de Spring 3 .
Actualmente me estoy mudando a Spring 3 y por lo que he leído hasta ahora veo mucho énfasis en usar anotaciones y alejarme de la configuración XML.
En realidad, lo que se recomienda es una combinación de ambos estilos, con anotaciones que cubren cosas que no cambiarán a menudo o de una ejecución a otra (por ejemplo, un @Controller
permanecerá así durante el tiempo de vida de la aplicación), mientras que las cosas que cambie y debe ser configurable para ir a XML (por ejemplo, una dirección de correo electrónico smtp, puntos finales para los servicios web con los que se comunica su aplicación, etc.).
Mi pregunta es: ¿qué se debe incluir en las anotaciones y en qué medida?
¿En qué punto las anotaciones hacen las cosas más difíciles en lugar de más fáciles? ¿Se adopta plenamente la tecnología (Spring 3) para poder hacer tales afirmaciones o se necesita más tiempo para que la gente adquiera experiencia con ella y luego reflexione sobre el tema?
Creo que hay dos casos en que el uso de anotaciones podría causar algunos problemas. En primer lugar, si desea escribir consultas con nombre complejas (JPA) en sus entidades. Vi algunos ejemplos de código de entidad y me pregunté si el código es realmente código Java o no. Muchos metadatos en el código del programa reducirán su legibilidad, lo que mata los principios de código limpio.
El segundo problema es la portabilidad entre las versiones JVM. La anotación es una característica 1.5+. Si su software debe admitir versiones anteriores de JVM, entonces no puede usarlas.
De todos modos, puede disfrutar de las anotaciones en todo momento sin dudar y ahorrar tiempo en no cambiar las pestañas IDE para verificar los XML si la propiedad todavía está allí o no, o si se ingresó correctamente, etc.
Para proyectos muy pequeños, aún podría tener una versión XML si no tiene muchas cosas que declarar en primavera. Pero, si estás en un gran proyecto, las cosas podrían ser muy problemáticas si tuvieras 10 configuraciones xml.
Las anotaciones son sin duda la forma en que continuará la programación "más nueva" en java. Utilizo las anotaciones para varios usos ... como @Scope
para el alcance del bean, @Required
para hacer que la dependencia sea necesaria, @Aspect
para configurar los consejos, @Autowired
para la inyección de constructores usando anotaciones. Desde la primavera 2.5, el soporte de anotación ha sido bueno. Consulte aquí el tutorial de primavera , donde se trata el tema basado en anotaciones here .
Quizás esto no le ayude mucho, pero en el trabajo no quieren usar el cableado automático porque necesita un escaneo de ruta de clase (pero creo que eso puede definirse en un paquete). Por lo tanto, aumenta el tiempo de inicio de la aplicación según el tamaño del proyecto.
Siempre es difícil obtener información realmente avanzada.
El tutorial sencillo con "mire en mi blog, copié el tutorial de hello word del sitio web Spring Source ... Ahora puede poner anotaciones de fantasía en todas partes, es la solución de todos nuestros problemas, incluido el cáncer y la inanición". no es realmente útil.
Si recuerdas, Spring Core tenía varios propósitos, entre ellos:
- ser no intrusivo
- para cambiar cualquier implementación / configuración de un bean en cualquier momento
- Para dar un lugar centralizado y controlado para poner tu configuración.
Anotación falla para todas las necesidades de tesis:
- Introducen acoplamiento con el resorte (puede usar la anotación estándar solamente, pero tan pronto como tenga al menos una anotación del resorte, esto ya no es cierto)
- Debe modificar el código fuente y volver a compilar para cambiar la implementación o la configuración del bean
- Las anotaciones están en todas partes en su código. Puede ser difícil encontrar qué bean se usará realmente simplemente leyendo el código o el archivo de configuración XML.
De hecho, hemos cambiado nuestro enfoque:
- Nos dimos cuenta de que casi nunca proporcionamos varias implementaciones de nuestros servicios.
- Nos dimos cuenta de que ser dependiente de una API no es tan malo.
- Nos dimos cuenta de que utilizamos Spring no solo para la inyección de dependencia real, sino principalmente para aumentar la productividad y reducir la verbosidad del código Java.
Así que usaría anotaciones cuando tenga sentido. Cuando es puramente eliminar el código repetitivo, la verbosidad. Me encargaría de usar el archivo de configuración XML para lo que desea hacer configurable, incluso si es solo para proporcionar una implementación de código auxiliar del servicio en pruebas unitarias.
Utilizo @Value
para las propiedades que están configuradas en un archivo de propiedades externo a través de PropertyPlaceholderConfigurer
, como se indica en kunal.
No hay una línea estricta para cuándo usar xml, pero yo uso xml:
- Cuando el frijol no es una clase controlo
- cuando el objeto está relacionado con la infraestructura o configuración en lugar de con la lógica empresarial.
- cuando la clase tiene algunas propiedades primitivas que me gustaría configurar, pero no necesariamente a través de configuraciones externalizadas.
En respuesta a su comentario: la primavera se adopta ampliamente, pero "bueno" y "malo" son muy subjetivos. Incluso mis líneas no son verdades universales. XML, las anotaciones y la configuración programática existen para un propósito, y cada desarrollador / empresa tiene sus preferencias.
Como dije, no hay una línea estricta ni una buena práctica universal para las anotaciones.