¿Qué patrones de diseño se utilizan en Spring Framework? [cerrado]

90

¿Qué patrones de diseño se utilizan en Spring Framework?

Tony
fuente
Incluye más de 10 patrones, incluidos ... MVC, controlador frontal, View Helper, Singleton, Prototype, Factory, etc. javabench.in/2012/02/design-patterns-being-used-in-spring.html
Raúl

Respuestas:

74

Se utilizan muchos patrones de diseño diferentes, pero hay algunos obvios:

  • Proxy: se usa mucho en AOP y de forma remota .

  • Singleton: los beans definidos en los archivos de configuración de Spring son singleton por defecto.

  • Método de plantilla: se utiliza ampliamente para tratar con código repetido estándar (como cerrar conexiones limpiamente, etc.). Por ejemplo JdbcTemplate , JmsTemplate , JpaTemplate .


Actualice los siguientes comentarios: Para MVC, es posible que desee leer la Referencia de MVC

Algunos patrones obvios en uso en MVC:

  • Controlador de vista de modelo :-). La ventaja de Spring MVC es que sus controladores son POJO en lugar de servlets. Esto facilita la prueba de los controladores. Una cosa a tener en cuenta es que solo se requiere que el controlador devuelva un nombre de vista lógica, y la selección de la vista se deja en un ViewResolver separado . Esto facilita la reutilización de controladores para diferentes tecnologías de visualización.

  • Controlador frontal . La primavera proporciona DispatcherServlet para garantizar que una solicitud entrante se envíe a sus controladores.

  • View Helper : Spring tiene una serie de etiquetas JSP personalizadas y macros de velocidad para ayudar a separar el código de la presentación en las vistas.

caja de herramientas
fuente
Gracias, ¿Cuáles son los patrones de diseño utilizados en el módulo Spring MVC?
Tony
10
No creo que Spring implemente singleton para los frijoles. Tenga en cuenta que un bean de ámbito único tendrá una única instancia por contexto de aplicación . Entonces, si su aplicación tiene dos contextos Spring, cargan un mismo bean singleton Fooy recupera la instancia de Foopor contexto, obtendrá dos referencias de objeto diferentes. En cambio, el patrón de diseño aplicado aquí es el peso mosca
Luiggi Mendoza
@Luiggi Mendoza ¿quieres decir que la primavera no tiene objetos singleton? por favor explícame con alguna aclaración.
Kumaresan Perumal
1
@KumaresanPerumal hay una diferencia significativa entre el patrón Singleton y la instancia singleton (observe la S mayúscula / minúscula). El patrón Singleton consiste en mantener una única instancia del objeto a lo largo de toda la aplicación. Lo que hace Spring al detectar un bean singleton es crear una sola instancia por contexto de aplicación . El contexto de la aplicación es el componente central de Spring y sirve para delegar la creación y recuperación de objetos. El bean singleton se crea solo una vez por contexto de aplicación.
Luiggi Mendoza
Los enlaces para el controlador de vista del modelo, el controlador frontal y la vista ayudan a llevar a oracle.com/technetwork/java/index.html . ¿Podría actualizar la respuesta con un enlace que funcione?
SpringLearner
12

Y, por supuesto, la inyección de dependencias, o IoC (inversión de control), que es fundamental para todo el tema de BeanFactory / ApplicationContext.

Chochos
fuente
10

En realidad, lo DI es una especie de patrón de estrategia. Siempre que desee que se pueda intercambiar alguna lógica / implementación, generalmente encontrará una interfaz y un método de establecimiento apropiado en la clase de host para conectar su implementación personalizada de esa interfaz.

Oliver Drotbohm
fuente
Respuesta del propio Maestro. @Oliver, ¿podrías indicar más patrones aquí?
Gaurav
6

Spring es una colección de patrones de API de mejores prácticas, puede escribir una lista de compras de ellos siempre que lo haga. La forma en que está diseñada la API te anima (pero no te obliga) a seguir estos patrones, y la mitad del tiempo los sigues sin saber que lo estás haciendo.

skaffman
fuente
3

Patrón de localizador de servicios: ServiceLocatorFactoryBean mantiene información de todos los beans en el contexto. Cuando el código del cliente solicita un servicio (bean) usando el nombre, simplemente ubica ese bean en el contexto y lo devuelve. El código del cliente no necesita escribir código relacionado con Spring para localizar un bean.

Suman Mitra
fuente
2

Observador-Observable: se usa en el mecanismo de eventos de ApplicationContext

ksevindik
fuente
1

El patrón de fábrica también se usa para cargar beans a través de BeanFactory y el contexto de la aplicación.

Gurpreet
fuente
1

Patrón de método de fábrica: BeanFactory para crear una instancia de un objeto Singleton: el tipo de instancia puede ser singleton para un contexto Prototipo: el tipo de instancia puede ser prototipo. Patrón de constructor: también puede definir un método en una clase que será responsable de crear una instancia compleja.

Praveen Sharma
fuente
0

Spring container genera objetos bean dependiendo del alcance del bean (singleton, prototipo, etc.). Así que esto parece implementar el patrón Abstract Factory . En la implementación interna de Spring, estoy seguro de que cada alcance debe estar vinculado a una clase de tipo de fábrica específica.

jsr
fuente