requestmapping mvc ejemplo arquitectura java spring spring-mvc

java - ejemplo - ¿Son controladores Spring MVC Singletons?



requestmapping spring boot (4)

Las acciones de Struts2 no son singleton porque llevan estado. Struts2 aprovecha las propiedades de javabeans en la acción en sí para llevar los datos de solicitud entrantes y exponerlos a las diversas capas del marco.

Spring, por otro lado, usa un objeto modelo que se entrega al controlador. El controlador en sí no mantiene el estado, por lo que un singleton tiene sentido.

Tengo una consulta sobre Spring 3 MVC @Controllers . Cuando entra una solicitud, ¿el contenedor crea una nueva instancia del controlador para cada solicitud (similar a una acción en Struts 2 - ThreadLocal ActionContext ) o una sola instancia responde a todas las solicitudes? Por defecto son los beans de controlador singletons en un contexto?

¿Cuáles son las pautas / mejores prácticas para una aplicación Spring 3 MVC? ¿Estas configuraciones son configurables? ¿Deberían ser configurados? ¿Cambia mucho si mi entorno es un entorno agrupado (supongo que no debería ser así, ya que los archivos jvm / contenedores serían diferentes) pero alguna sugerencia autorizada sería bienvenida.

He leído la documentación de Spring pero probablemente me lo perdí. Cualquier ''esta es la forma en que implementamos tipo de'' respuestas / indicadores / enlaces sería útil Gracias.


Los controladores de resorte son singleton (solo hay una instancia de cada controlador por aplicación web) al igual que los servlets. Por lo general, no tiene sentido cambiar este comportamiento (si es posible). Consulte Respecto a la seguridad de la rosca del servlet para detectar fallas comunes, también aplicable a los controladores.

Si su aplicación está agrupada, haga todo lo posible para evitar el estado. El estado en los controladores requerirá sincronización para evitar problemas de enhebrado. Además, probablemente repita ese estado en todos los servidores, muy costoso y problemático.


Los controladores son singleton, por lo tanto, pueden evitar crear muchas instancias por palabra clave new si la aplicación web procesa muchas solicitudes al mismo tiempo. Usar el controlador singleton también podría aliviar la carga de JVM al disminuir el GC joven.


Por defecto, Spring beans son singletons. Spring sugiere usar singletons para beans sin estado como controladores y DAO, y el alcance del prototipo para beans con estado.