Quais padrões de design são usados ​​no framework Spring? [fechadas]

90

Quais padrões de design são usados ​​no framework Spring?

Tony
fonte
Inclui mais de 10 padrões incluindo ..MVC, Controlador frontal, View Helper, Singleton, Prototype, Factory etc. javabench.in/2012/02/design-patterns-being-used-in-spring.html
Raúl

Respostas:

74

Existem muitos padrões de design diferentes usados, mas existem alguns óbvios:

  • Proxy - muito usado em AOP e remoting .

  • Singleton - os beans definidos nos arquivos de configuração do spring são singletons por padrão.

  • Método de modelo - usado extensivamente para lidar com código repetido clichê (como fechar conexões de forma limpa, etc.). Por exemplo , JdbcTemplate , JmsTemplate , JpaTemplate .


Atualize os seguintes comentários: Para MVC, você pode querer ler a Referência MVC

Alguns padrões óbvios em uso em MVC:

  • Controlador de visualização do modelo :-). A vantagem do Spring MVC é que seus controladores são POJOs ao invés de servlets. Isso facilita o teste dos controladores. Uma coisa a se notar é que o controlador só precisa retornar um nome de visualização lógico, e a seleção da visualização é deixada para um ViewResolver separado . Isso torna mais fácil reutilizar controladores para diferentes tecnologias de visualização.

  • Controlador frontal . Spring fornece DispatcherServlet para garantir que uma solicitação de entrada seja despachada para seus controladores.

  • View Helper - Spring possui uma série de tags JSP customizadas e macros de velocidade, para ajudar a separar o código da apresentação nas visualizações.

kit de ferramentas
fonte
Obrigado, Quais são os padrões de design usados ​​no módulo Spring MVC?
Tony,
10
Não acho que o Spring implemente o singleton para os feijões. Observe que um bean com escopo único terá uma única instância por contexto de aplicativo . Portanto, se seu aplicativo tem dois contextos Spring, eles carregam um mesmo bean singleton Fooe você recupera a instância de Foopor contexto, você obterá duas referências de objeto diferentes. Em vez disso, o padrão de design aplicado aqui é o peso mosca
Luiggi Mendoza
@Luiggi Mendoza você quer dizer que a primavera não tem objetos singleton? por favor me explique com alguns esclarecimentos.
Kumaresan Perumal
1
@KumaresanPerumal há uma diferença significativa entre o padrão Singleton e a instância singleton (observe o S maiúsculo / minúsculo). O padrão Singleton trata da manutenção de uma única instância do objeto em todo o aplicativo. O que o Spring faz ao detectar um singleton bean é criar uma única instância por contexto de aplicativo . O contexto do aplicativo é o componente principal do Spring e serve para delegar a criação e recuperação de objetos. O singleton bean é criado apenas uma vez por contexto de aplicativo.
Luiggi Mendoza
Links para o controlador de visualização de modelo, controlador frontal e visualização auxiliada leva para oracle.com/technetwork/java/index.html . Você poderia atualizar a resposta com um link funcional?
SpringLearner
12

E, claro, injeção de dependência, ou IoC (inversão de controle), que é central para todo o material BeanFactory / ApplicationContext.

Chochos
fonte
10

A coisa do DI na verdade é algum tipo de padrão de estratégia. Sempre que você quiser que alguma lógica / implementação possa ser trocada, você normalmente encontrará uma interface e um método setter apropriado na classe do host para conectar sua implementação customizada dessa interface.

Oliver Drotbohm
fonte
Resposta do próprio Mestre. @Oliver você poderia indicar mais padrões aqui?
Gaurav
6

Spring é uma coleção de padrões de API de melhores práticas, você pode escrever uma lista de compras deles tão longa quanto seu braço. A maneira como a API é projetada o incentiva (mas não o força) a seguir esses padrões e, na maioria das vezes, você os segue sem saber que está fazendo isso.

skaffman
fonte
3

Padrão de localizador de serviço - ServiceLocatorFactoryBean mantém informações de todos os beans no contexto. Quando o código do cliente pede um serviço (bean) usando name, ele simplesmente localiza esse bean no contexto e o retorna. O código do cliente não precisa escrever código relacionado ao spring para localizar um bean.

Suman Mitra
fonte
2

Observer-Observable: é usado no mecanismo de eventos do ApplicationContext

ksevindik
fonte
1

O padrão de fábrica também é usado para carregar beans por meio do BeanFactory e do contexto do aplicativo.

Gurpreet
fonte
1

Padrão de Factory Method: BeanFactory para criar instância de um objeto Singleton: o tipo de instância pode ser singleton para um contexto Protótipo: o tipo de instância pode ser protótipo. Padrão de construtor: você também pode definir um método em uma classe que será responsável por criar uma instância complexa.

Praveen Sharma
fonte
0

O Spring container gera objetos de bean dependendo do escopo do bean (singleton, protótipo etc.). Então, isso parece implementar o padrão Abstract Factory . Na implementação interna do Spring, tenho certeza de que cada escopo deve ser vinculado a uma classe de tipo de fábrica específica.

jsr
fonte