¿Cuándo es necesario o conveniente utilizar Spring o EJB3 o todos ellos juntos?

Estoy un poco confundido por el uso mixto de JSF2 + Spring + EJB3 o cualquier combinación de estos. Sé que una de las características principales de Spring es la inyección de dependencia, pero con JSF manejado puedo usar beans@ManagedBean y@ManagedProperty Las anotaciones y la funcionalidad de inyección de dependencias. Con EJB3 estoy aún más confundido acerca de cuándo usarlo junto con JSF o si hay incluso una razón para usarlo.

Entonces, ¿en qué tipo de situación sería una buena idea usar Spring + JSF2 o EJB3 + JSF2?

Hasta ahora solo he creado algunas aplicaciones web pequeñas utilizando solo JSF2 y nunca he necesitado usar Spring o EJB3. Sin embargo, estoy viendo en muchos lugares que la gente está trabajando con todas estas cosas juntas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta