Estoy desarrollando una aplicación JAVA EE 6. Estoy usando CDI extensivamente, Mi pregunta es, ¿son @Inject y @Produces lo mismo que @In y @Out for Seam? ¿Las anotaciones @In y @Out todavía se usan ahora que tenemos CDI?Seam bijection and Weld
Respuesta
¿Las anotaciones @In y @Out siguen siendo usadas ahora que tenemos CDI?
@In
y @Out
son Seam 2 anotaciones, por lo que no se utilizan en Java EE 6.
Mi pregunta es, son @Inject y @Produces lo mismo que @In y @out de ¿costura?
@Inject
y @Produces
son no exactamente lo mismo pero que son más o menos equivalentes. La principal diferencia es que las dependencias de Java EE 6 se producen cuando requirió (controlado por el componente que requiere la dependencia), mientras que en Seam 2 se realizó tan pronto como algo fue listo para ser utilizado en otro lugar (controlado por componente que proporciona la dependencia)
Tome un inicio de sesión como ejemplo:
- en Seam 2, el usuario autenticado se outjected en el alcance deseado (como sesión) inmediatamente después de haber iniciado sesión con éxito en el componente de entrada en sí. tenía un alcance que por lo general se ajusta al caso de uso (conversación), pero no el alcance de la dependencia proporcionada (sesión).
en Java EE 6, un componente de inicio de sesión del ámbito realiza la autenticación y almacena el usuario autenticado en un campo privado. Este campo es controlado por un método productor. Así que cada vez que otro componente pide al usuario autenticado, algo como esto se lleva a cabo:
@Produces @LoggedIn User getCurrentUser() { return user; }
¿Por qué? Te escucho preguntando ...
La razón es bastante simple. Weld/Java EE 6 obtiene un gran aumento de rendimiento al ser capaz de proxy (la mayoría de las dependencias). Y simplemente no es posible realizar proyecciones de proxy :-)
Bueno, aparte de eso: el enfoque orientado a la demanda de Java EE 6 (lo solicita cuando lo necesita) se siente superior a Seam 2 (lo produce y lo almacena) .
- 1. JBoss Seam Design Patterns?
- 2. JBoss Seam tutoriales
- 3. spring mvc vs seam
- 4. Seam excepciones centralizadas
- 5. Identificación dinámica en JSF/Seam
- 6. Inyectar lista de objetos en CDI (Weld)
- 7. ordenando dinámicamente un NamedQuery? Seam/Hibernate/JPA
- 8. Qué tan popular es el Seam Framework
- 9. Seam 2.x e Hibernate 3.5?
- 10. Seam Faces causa un error en el tiempo de implementación
- 11. (OrElse and Or) and (AndAlso and And) - ¿Cuándo usar?
- 12. Forzar una transacción para deshacer errores de validación en Seam
- 13. Recomendación sobre dónde debería empezar a leer sobre CDI (Weld)
- 14. ¿Cuáles son los mejores trucos de depuración con Weld/CDI?
- 15. Cómo inyectar constantes de cadenas fácilmente con Weld?
- 16. WELD-001408 Dependencias insatisfechas cuando se inyecta EntityManager
- 17. ¿Se puede controlar el escaneo classpath en Weld?
- 18. Impossible tech stack? Jboss/Seam/Resteasy/Hibernate/Maven
- 19. ¿Es posible usar Seam en un servicio sincronizado de JBoss?
- 20. cambiando anotaciones de JBoss Seam a CDI (JEE6)
- 21. struct and class and inheritance (C++)
- 22. create db and user mysql and set privileges php
- 23. Fluido NHibernate genera AND AND Assigned ID Columns
- 24. Mocks and Stubs
- 25. Python constructors and __init__
- 26. auto_ptr Traps and Pitfalls
- 27. Rails/lib modules and
- 28. QueryPerformanceCounter and thread safety
- 29. WCF and Soap 1.1
- 30. CMake and Boost
Ene, gracias por su respuesta tan útil. Mencionas @In y @Out son anotaciones de Seam 2, ¿están obsoletas en la costura 3? – arg20
Más que eso, no están disponibles. Son parte del jar Seam 2, y esta biblioteca no está implementada en JEE 6, por lo que no puede usarlas en absoluto. –
Seam2! = Seam3 Solo los nombres son iguales. Seam3 es una nueva implementación completa. –