framework - spring mvc pdf
¿Las clases de capa de servicio deben ser singletons? (3)
La primavera es más fácil de usar si te quedas con los frijoles singleton scoped. Singletons es su "posición por defecto", si lo desea. Sí, admite otros ámbitos (utilizando scope="xyz"
en el archivo XML), pero hace que las cosas sean más difíciles de usar y perjudica el rendimiento.
Esencialmente, a menos que tenga una buena razón para hacer lo contrario, quédese con singletons.
Estoy usando Spring Framework. ¿Deben crearse mis clases de servicio como singletons? ¿Puede alguien explicar por qué o por qué no? ¡Gracias!
Usted necesita en su mayoría singletons. (Valor predeterminado de Spring.) Singletons debe ser seguro para subprocesos, ya que las solicitudes paralelas usarán la misma instancia única. De hecho, deben ser completamente apátridas, ya que pueden destruirse y recrearse en cualquier momento.
Si necesita realizar un seguimiento del estado dentro de su bean (no debería, esto debería estar en la base de datos o almacenado en la solicitud), obtendrá muchas instancias del mismo tipo de bean, el uso de memoria aumenta con el número de solicitudes, por lo que con singletons todavía tendrá solo una instancia.
Incluso si tiene un alcance de frijoles para una solicitud, deben ser al menos seguros para subprocesos (las solicitudes provienen del mismo navegador al mismo tiempo).
Sí, deben ser de alcance singleton
. Los servicios deben ser sin estado, y por lo tanto no necesitan más de una instancia.
Por lo tanto, definirlos en el alcance singleton
ahorraría tiempo para crear instancias y conectarlos.
singleton
es el alcance predeterminado en primavera, así que simplemente deje sus definiciones de bean como están, sin especificar explícitamente el atributo de scope
.
Puedes leer más sobre los alcances en los documentos de primavera .