Para que exatamente serve o Spring Framework? [fechadas]

623

Eu ouço muito sobre o Spring , as pessoas estão dizendo em toda a web que o Spring é uma boa estrutura para o desenvolvimento da web. Para que exatamente serve o Spring Framework?

Maksim
fonte
10
Entendo que a pergunta é muito ampla, mas acho que, neste caso muito específico, é muito importante para desenvolvedores junion que são frequentemente falados sobre o Spring por pessoas que assumem que é popular o suficiente para que não seja preciso nem dizer o que faz. Afinal, levante a mão se você nunca ouviu falar sobre Instagram e qual o seu propósito .... (confissão: eu nunca usei Insta)
ΕΨΗΕΛΩΝ usr-local-
2
A pergunta foi feita há 10 anos e, na época, o Spring era um pouco menor do que agora com todos os seus subprojetos, como Spring Boot, Spring Data, Spring Rest, etc. a amplitude desta questão. No momento em que fiz essa pergunta, eu só queria entender a DI e por que ela é necessária.
Maksim

Respostas:

713

Basicamente, a primavera é uma estrutura para que é um padrão que permite construir sistemas muito dissociados.

O problema

Por exemplo, suponha que você precise listar os usuários do sistema e, assim, declarar uma interface chamada UserLister:

public interface UserLister {
    List<User> getUsers();
}

E talvez uma implementação acessando um banco de dados para obter todos os usuários:

public class UserListerDB implements UserLister {
    public List<User> getUsers() {
        // DB access code here
    }
}

Na sua opinião, você precisará acessar uma instância (apenas um exemplo, lembre-se):

public class SomeView {
    private UserLister userLister;

    public void render() {
        List<User> users = userLister.getUsers();
        view.render(users);
    }
}

Observe que o código acima não inicializou a variável userLister. O que deveríamos fazer? Se eu instanciar explicitamente o objeto assim:

UserLister userLister = new UserListerDB();

... Eu associaria a visão à minha implementação da classe que acessa o banco de dados. E se eu quiser mudar da implementação do banco de dados para outra que obtenha a lista de usuários de um arquivo separado por vírgula (lembre-se, é um exemplo)? Nesse caso, eu retornaria ao meu código e alteraria a linha acima para:

UserLister userLister = new UserListerCommaSeparatedFile();

Isso não tem problema com um programa pequeno como este, mas ... O que acontece em um programa que possui centenas de visualizações e um número semelhante de classes de negócios? A manutenção se torna um pesadelo!

Abordagem por mola (injeção de dependência)

O que o Spring faz é conectar as classes usando um arquivo XML ou anotações. Dessa forma, todos os objetos são instanciados e inicializados pelo Spring e injetados nos lugares certos (Servlets, Web Frameworks, classes de negócios, DAOs, etc, etc, etc) ...)

Voltando ao exemplo no Spring, precisamos apenas de um setter para o userListercampo e ter um arquivo XML como este:

<bean id="userLister" class="UserListerDB" />

<bean class="SomeView">
    <property name="userLister" ref="userLister" />
</bean>

ou mais simplesmente anote o arquivado em nossa classe de exibição com @Inject:

@Inject
private UserLister userLister;

Dessa forma, quando a vista é criada, ela magicamente estará UserListerpronta para funcionar.

List<User> users = userLister.getUsers();  // This will actually work
                                           // without adding any line of code

Isso é ótimo! Não é?

  • E se você quiser usar outra implementação da sua UserListerinterface? Apenas mude o XML.
  • E se não houver uma UserListerimplementação pronta? Programe uma implementação simulada temporal UserListere facilite o desenvolvimento da visualização.
  • E se eu não quiser mais usar o Spring? Só não use! Seu aplicativo não está associado a ele. Inversão de controle declara: "O aplicativo controla a estrutura, não a estrutura controla a aplicação".

Existem algumas outras opções para injeção de dependência por lá, o que, na minha opinião, tornou o Spring tão famoso, além de sua simplicidade, elegância e estabilidade, é que os caras do SpringSource programaram muitos POJOs que ajudam a integrar o Spring a muitos outros frameworks comuns sem ser necessário. intrusivo em sua aplicação. Além disso, o Spring possui vários bons subprojetos, como o Spring MVC, o Spring WebFlow, o Spring Security e novamente uma lista extensa de etc.

Espero que isto ajude. De qualquer forma, encorajo você a ler o artigo de Martin Fowler sobre Injeção de Dependência e Inversão de Controle, porque ele faz isso melhor do que eu. Depois de conhecer os fundamentos dar uma olhada em Documentação da Primavera , na minha opinião, ele é utilizado para ser o melhor livro Primavera nunca.

Victor Hugo
fonte
148
Qual é a diferença entre ter que alterar uma linha de código e uma linha de XML? O inferno de esforço e manutenção é exatamente o mesmo, ou pior, já que os arquivos xml externos indiscutivelmente adicionam complexidade? Desculpe, mas eu simplesmente não entendo, não vejo nenhum benefício. Por favor, me informe se estou perdendo alguma coisa.
fred
23
@fred - Imagine que você está fazendo testes de unidade. Sem injeção de dependência (o DI pode ser usado com anotações ou com XML), você não pode testar adequadamente, porque não pode simular as dependências.
Petar Minchev
18
@fred - definir toda injeção em XML de fato faz pouco sentido. É uma sobrecarga enorme de manter. Por isso, a EJB introduziu o conceito de anotações para pontos de injeção. Essas são muito mais simples e uma instância padrão será injetada (para testes de unidade, isso pode ser alterado uma vez). Isso funcionou tão bem que o Spring agora copiou essa abordagem. Observe que, se necessário (mas somente se realmente necessário), as anotações ainda podem ser substituídas pelo XML no EJB.
Mike Braun
36
Ou, você sabe, use um método estático de fábrica. Altere o tipo de retorno da fábrica e agora todas as classes que usam esse valor de retorno são alteradas. Agora o Presto Spring não é mais necessário ...
Qix - MONICA FOI ERRADA EM 25/11
16
@mmcrae Prefiro fazer uma chamada de refatoração no meu IDE do que escrever XML.
Qix - MONICA FOI ERRADA EM 14/04
63

O Spring contém ( como Skaffman corretamente apontou ) uma estrutura MVC. Para explicar resumidamente, aqui estão minhas contribuições. O Spring suporta a segregação da camada de serviço, da web e da empresa, mas o que realmente faz melhor é a "injeção" de objetos. Então, para explicar que, com um exemplo, considere o exemplo abaixo:

public interface FourWheel
{
   public void drive();
}

public class Sedan implements FourWheel
{
   public void drive()
   {
      //drive gracefully
   }
}

public class SUV implements FourWheel
{
   public void drive()
   {
      //Rule the rough terrain
   }
}

Agora, no seu código, você tem uma classe chamada RoadTrip da seguinte maneira

public class RoadTrip
{
    private FourWheel myCarForTrip;
}

Agora sempre que você quiser uma instância do Trip; Às vezes, você pode querer que um SUV inicialize o FourWheel ou, às vezes, o Sedan. Realmente depende do que você deseja com base em situações específicas.

Para resolver esse problema, você deseja ter um padrão de fábrica como padrão de criação. Onde uma fábrica retorna a instância correta. Então, eventualmente, você terá muito código de cola para instanciar os objetos corretamente. O Spring faz o trabalho do código de cola melhor sem esse código. Você declara mapeamentos em XML e ele inicializa os objetos automaticamente. Também faz muito uso da arquitetura singleton para instâncias e isso ajuda no uso otimizado da memória.

Isso também é chamado de Inversão de controle. Outras estruturas para fazer isso são o guice do Google, o contêiner Pico etc.

Além disso, o Spring possui uma estrutura de validação, amplo suporte para a camada DAO em colaboração com JDBC, iBatis e Hibernate (e muito mais). Fornece excelente controle transacional sobre transações de banco de dados.

Há muito mais no Spring que pode ser lido em bons livros como "Pro Spring".

Os seguintes URLs também podem ser úteis.
http://static.springframework.org/docs/Spring-MVC-step-by-step/
http://en.wikipedia.org/wiki/Spring_Framework
http://www.theserverside.com/tt/articles/article .tss? l = SpringFramework

Priyank
fonte
5
Spring contém uma estrutura MVC. Mas é muito, muito mais que isso.
30810 skaffman
Sem desejar muito, o WebMVC faz parte da distribuição principal da primavera. Webflow, RCP et al não são.
30810 skaffman
1
Isso é bom, eu não sabia que você pode instanciar objetos do tipo de interface em Java - o que é ilegal @skaffman me ajudar a entender esta resposta (veja Instância de fourwheel)
Jossie Calderon
47

Antigamente, o Spring era um quadro de injeção de dependência que funcionava apenas como ( Guice , PicoContainer , ...), mas hoje em dia é uma solução total para a criação do seu aplicativo corporativo .

A injeção de dependência da mola, que é, obviamente, o coração da primavera ainda está lá (e você pode revisar outras boas respostas aqui), mas há mais da primavera ...

O Spring agora tem muitos projetos, cada um com alguns subprojetos ( http://spring.io/projects ). Quando alguém fala sobre primavera, você deve descobrir de que projeto primavera ele está falando, é apenas o núcleo da primavera, que é conhecido como estrutura da primavera , ou é outro projeto da primavera.

Alguns projetos de primavera que merecem destaque são:

Se você precisar de algum recurso mais específico para seu aplicativo, também poderá encontrá-lo:

  • Estrutura em lote do Spring Batch projetada para permitir o desenvolvimento de
    aplicativos em lote
  • Spring HATEOAS fácil criação da API REST com base no principal do HATEOAS
  • Spring Mobile e Spring Andriod para desenvolvimento de aplicativos móveis
  • O Spring Shell cria um aplicativo de shell completo (também conhecido como linha de comando)
  • Spring Cloud e Spring Cloud Data Flow para aplicativos em nuvem

Existem também alguns pequenos projetos, por exemplo, spring-social-facebook ( http://projects.spring.io/spring-social-facebook/ )

Você pode usar o spring para desenvolvimento web, pois ele possui o Spring MVCmódulo que faz parte do projeto Spring Framework . Ou você pode usar o spring com outro framework da web, como o struts2 .

Alireza Fattahi
fonte
1
Na verdade, eu gostaria de ver que o mvc, data, jpa e outras partes do Spring têm uma opção para não usar o DI central do Spring, mas colocar o Dagger no coração do Spring.
precisa saber é o seguinte
25

Para que serve o Spring? Responderei a essa pergunta em breve, mas primeiro, vamos dar uma outra olhada no exemplo de victor hugo. Não é um ótimo exemplo, porque não justifica a necessidade de uma nova estrutura.

public class BaseView {
  protected UserLister userLister;

  public BaseView() {
    userLister = new UserListerDB(); // only line of code that needs changing
  }
}

public class SomeView extends BaseView {
  public SomeView() {
    super();
  }

  public void render() {
    List<User> users = userLister.getUsers();
    view.render(users);
  }
}

Feito! Portanto, agora, mesmo que você tenha centenas ou milhares de visualizações, ainda precisará alterar a linha de código, como na abordagem Spring XML. Mas alterar uma linha de código ainda requer recompilar, em vez de editar o XML que você diz? Bem, meu amigo exigente, use Ant e script de distância!

Então, para que serve o Spring? É para:

  1. Desenvolvedores cegos que seguem o rebanho
  2. Os empregadores que nunca desejam contratar programadores de pós-graduação porque não ensinam tais estruturas na Uni
  3. Projetos que começaram com um design ruim e precisam de retalhos (como mostra o exemplo de victor hugo)

Leitura adicional: http://discuss.joelonsoftware.com/?joel.3.219431.12

Cinza
fonte
11
Frustração à parte, estou pensando nos seus argumentos. Não conheço nenhuma ferramenta de programação que você não possa usar para produzir um design ruim. O seu objetivo é que, usando estruturas, você possa fazer com que códigos ruins façam muitas coisas. Isso é universalmente verdadeiro e não é específico para o Spring. Caso contrário, qual é o objetivo? Você não acha que desenvolvedores competentes podem fazer bom uso do que o Spring tem a oferecer - sendo específico em quais ferramentas da estrutura que eles usam? Pelo menos, tenho certeza de que você não implica que nenhum desenvolvedor do Spring já tenha ouvido falar em estender classes. A leitura adicional é hilária, no entanto.
Sthzg
2
Além disso, seu exemplo funciona porque a visualização precisa de apenas um serviço injetado ( UserLister), mas e se precisar de vários serviços, não compartilhados entre os BaseViewfilhos dos diferentes ? Felizmente, não há herança múltipla em Java.
Edouard Berthe
@EdouardBerthe Fair point. Minha resposta não foi uma tentativa de desconsiderar o DI, apenas aponta que o exemplo mostrado na resposta aceita não é o melhor; o cenário que você está propondo provavelmente funcionaria melhor. O ponto que eu realmente estava tentando enfatizar não é que você não precise de DI, mas sim que não precise de uma estrutura inteira para fazê-lo.
Ash
19

Resumindo muito brevemente, direi que a primavera é a "cola" em sua aplicação. É usado para integrar diferentes estruturas e seu próprio código.

Johan
fonte
15

A primavera é três coisas.

  1. Spring lida com injeção de dependência e eu recomendo que você leia a excelente introdução de Martin Fowler sobre injeção de dependência.
  2. A segunda coisa que o Spring faz é agrupar excelentes bibliotecas Java de uma maneira muito elegante para usar em seus aplicativos. Para um bom exemplo, veja como o Spring envolve os Executores de tarefas e o Quartz Scheduler.
  3. Terceiro, o Spring fornece várias implementações de coisas da Web, como REST, uma estrutura da Web MVC e muito mais. Eles constatam que, como você está usando o Spring nos dois primeiros, talvez você possa usá-lo para tudo o que seu aplicativo Web precisa.

O problema é que o Spring DI é realmente bem pensado, os invólucros de outras coisas são muito bem pensados, pois as outras coisas pensaram em tudo e o Spring simplesmente o envolve. As implementações Spring do MVC e REST e todas as outras coisas não são tão boas (YMMV, IMHO), mas há exceções (Spring Security é uma bomba). Por isso, costumo usar o Spring for DI e seus invólucros legais, mas prefiro outras coisas para a Web (gosto muito de tapeçaria), REST (Jersey é realmente robusta), etc.

karstensrage
fonte
9
YMMV, IMHO - sua milhagem pode variar, em minha opinião humilde para aqueles de vocês que não fluente em abreviações como me ...
Sakamoto Kazuma
11

O que você provavelmente desejaria em um aplicativo Web com o Spring -

  • O Spring MVC, que com 2.5+ permite usar POJOs como classes Controller, o que significa que você não precisa se estender a partir de nenhuma estrutura específica (como no Struts ou no Spring anterior ao 2.5). As classes de controladores também são simples de testar, graças em parte à injeção de dependência
  • Integração de primavera com o Hibernate, que simplifica o trabalho com essa solução ORM (na maioria dos casos)
  • O uso do Spring para um aplicativo Web permite que você use seus Objetos de Domínio em todos os níveis do aplicativo - as mesmas classes mapeadas usando o Hibernate são as classes que você usa como "beans de formulário". Por natureza, isso levará a um modelo de domínio mais robusto, em parte porque reduzirá o número de classes.
  • As tags de formulário de primavera facilitam a criação de formulários sem muito aborrecimento.

Além disso, o Spring é ENORME - portanto, há muitas outras coisas que você pode estar interessado em usar em um aplicativo Web, como o Spring AOP ou o Spring Security. Mas as quatro coisas listadas acima descrevem os componentes comuns do Spring que são usados ​​em um aplicativo da web.

bpapa
fonte
9

Eu vejo duas partes disso:

  1. "Para que serve exatamente o Spring" -> veja a resposta aceita por victor hugo.
  2. "[...] Spring é [uma] boa estrutura para desenvolvimento web" -> pessoas dizendo isso estão falando sobre Spring MVC. O Spring MVC é uma das muitas partes do Spring e é uma estrutura da Web que utiliza os recursos gerais do Spring, como injeção de dependência. É uma estrutura bastante genérica, pois é muito configurável: você pode usar diferentes camadas db (Hibernate, iBatis, JDBC simples), diferentes camadas de visualização (JSP, Velocity, Freemarker ...)

Observe que você pode perfeitamente usar o Spring em um aplicativo Web sem usar o Spring MVC. Eu diria que a maioria dos aplicativos Web Java faz isso, enquanto usa outras estruturas da Web como Wicket, Struts, Seam, ...

Tom De Leu
fonte
8

A primavera é ótima para colar instâncias de classes juntas. Você sabe que suas classes do Hibernate sempre precisarão de uma fonte de dados, o Spring as une (e também implementa a fonte de dados).

Seus objetos de acesso a dados sempre precisam de acesso ao Hibernate; o Spring liga as classes do Hibernate aos DAOs para você.

Além disso, o Spring basicamente fornece configurações sólidas de várias bibliotecas e fornece orientações sobre quais bibliotecas você deve usar.

A primavera é realmente uma ótima ferramenta. (Eu não estava falando sobre o Spring MVC, apenas a estrutura base).

stevedbrown
fonte
5

A resposta aceita não envolve o uso de anotações desde que o Spring introduziu suporte para várias anotações para configuração.

Abordagem por mola (injeção de dependência)

Existe uma outra maneira de conectar as classes usando um arquivo XML: as anotações. Vamos usar o exemplo da resposta aceita e registrar o feijão diretamente sobre a classe usando uma das anotações @Component, @Service, @Repositoryou @Configuration:

@Component
public class UserListerDB implements UserLister {
    public List<User> getUsers() {
        // DB access code here
    }
}

Dessa forma, quando a visualização é criada, ela magicamente terá um UserLister pronto para funcionar.

A declaração acima é válida com um pequeno bônus, sem a necessidade de qualquer uso de arquivo XML e conexão com outra anotação @Autowiredque encontre uma implementação relevante e a injete.

@Autowired
private UserLister userLister;

Use a @Beananotação em um método usado para obter a implementação do bean para injetar.

Nikolas
fonte
Errado. Você não pode usar a @Beananotação no nível da classe. Deve ser um dos @Component, @Service, @Repositoryetc. O descanso é correta. Talvez você deva também salientar que a conexão automática da interface dessa maneira só funcionará se houver apenas 1 classe candidata no caminho de classe adequado para injeção, caso contrário, erro no aplicativo Spring.
27518 Stefan L
@StefanoL: Sim, você está certo. Eu imagino que as pessoas tenham ignorado meu erro. Obrigado pelo comentário.
Nikolas 02/03
4

A vantagem é injeção de dependência (DI) . Significa terceirizar a tarefa de criação de objetos. Deixe-me explicar com um exemplo.

public interface Lunch
{
   public void eat();
}

public class Buffet implements Lunch
{
   public void eat()
   {
      // Eat as much as you can 
   }
}

public class Plated implements Lunch
{
   public void eat()
   {
      // Eat a limited portion
   }
}

Agora, no meu código, tenho uma classe LunchDecide da seguinte maneira:

public class LunchDecide {
    private Lunch todaysLunch;
    public LunchDecide(){
        this.todaysLunch = new Buffet(); // choose Buffet -> eat as much as you want
        //this.todaysLunch = new Plated(); // choose Plated -> eat a limited portion 
    }
}

Na aula acima, dependendo do nosso humor, escolhemos Buffet () ou Banhado (). No entanto, este sistema está firmemente acoplado. Toda vez que precisamos de um tipo diferente de objeto, precisamos alterar o código. Nesse caso, comentando uma linha! Imagine que existem 50 classes diferentes usadas por 50 pessoas diferentes. Seria uma bagunça e tanto. Nesse caso, precisamos desacoplar o sistema. Vamos reescrever a classe LunchDecide.

public class LunchDecide {
    private Lunch todaysLunch;
    public LunchDecide(Lunch todaysLunch){
        this.todaysLunch = todaysLunch
        }
    }

Observe que, em vez de criar um objeto usando a nova palavra-chave, passamos a referência a um objeto do tipo de almoço como parâmetro para o nosso construtor. Aqui, a criação de objetos é terceirizada. Esse código pode ser conectado usando o arquivo de configuração Xml (legado) ou as Anotações Java (modernas). De qualquer maneira, a decisão sobre qual tipo de objeto seria criado seria tomada durante o tempo de execução. Um objeto seria injetado por Xml em nosso código - Nosso Código depende de Xml para esse trabalho. Portanto, injeção de dependência (DI). O DI não apenas ajuda a tornar nosso sistema pouco acoplado, mas também simplifica a gravação de testes de unidade, pois permite que as dependências sejam zombadas. Por último, mas não menos importante, o DI simplifica a Programação Orientada a Aspectos (AOP), o que leva a uma maior dissociação e aumento da modularidade. Observe também que o DI acima é injeção de construtor.

Sumit Pokhrel
fonte
Mas mesmo no caso da primavera, ainda estaríamos definindo o feijão. e a identificação do bean será fornecida no código, não é? então, se você mudar o bean amanhã, ainda precisará alterar o código, não é? então qual é o benefício?
Arpan Buch
@ArpanBuch Acho que o benefício da primavera é que você pode escolher uma implementação diferente sem recompilar nenhum código (desde que a outra implementação já exista). Sou iniciante, posso estar errado.
byxor
4
  • A primavera é uma estrutura leve e flexível, comparada ao J2EE.
  • O contêiner de mola atua como uma inversão de controle.
  • O Spring usa AOP, ou seja, proxies e padrões Singleton, Factory e Template Method Design.
  • Arquiteturas em camadas: separação de preocupações e camadas reutilizáveis ​​e fácil manutenção.

insira a descrição da imagem aqui

Premraj
fonte
1
Spring Framework help you with several things like, don't reinvent the wheel. you can connect very easily with some database just using Spring Data, or create schedule tasks like CronJob or Windows Task. amazing !
precisa saber é o seguinte
3

O Spring é uma boa alternativa à tecnologia Enterprise JavaBeans (EJB) . Ele também possui estrutura da web e componente da estrutura de serviços da web.

fastcodejava
fonte
1
Posso corrigir? Foi uma alternativa ao (horrível) EJB 2 ... parece que o "novo EJB" (em parte, JPA 2, etc) tem aceitação fantástica. "Happy hours" da parte da primavera "uma espécie de EJB" parece ter passado. anúncio 2015
Jacek Cz
1

O Spring começou como um sistema de injeção de dependência bastante simples. Agora é enorme e tem tudo dentro (exceto a pia da cozinha proverbial).

Mas não tema, é bastante modular para que você possa usar apenas as peças que deseja.

Para ver onde tudo começou, tente:

http://www.amazon.com/Expert-One-Design-Development-Programmer/dp/0764543857/ref=sr_1_1?ie=UTF8&s=books&qid=1246374863&sr=1-1

Pode ser antigo, mas é um excelente livro.

Para outro bom livro desta vez dedicado exclusivamente ao Spring, consulte:

http://www.amazon.com/Professional-Java-Development-Spring-Framework/dp/0764574833/ref=sr_1_2?ie=UTF8&s=books&qid=1246374863&sr=1-2

Ele também faz referência a versões mais antigas do Spring, mas definitivamente vale a pena olhar.

Pablojim
fonte
1

A primavera foi a injeção de dependência no início e, em seguida, adicione o rei dos invólucros para quase tudo (invólucro sobre implementações de JPA etc.).

Longa história ... a maioria das partes do Spring prefere soluções XML (mecanismo de script XML ... brrrr), então, para o DI, uso o Guice

Boa biblioteca, mas com o crescimento do depnedenciec, por exemplo, o Spring JDBC (talvez uma solução Java jdbc com parâmetros de nomes reais) retire do maven 4-5 a seguir.

Usando o Spring MVC (parte de "big spring") para desenvolvimento web ... é uma estrutura "baseada em solicitação", existe guerra santa "solicitação versus componente" ... até você

Jacek Cz
fonte
1
Acredito que agora o framework Spring está tentando se afastar do XML para anotações e configuração Java.
Maksim
0

No passado, eu pensei sobre o framework Spring do ponto de vista puramente técnico.

Dada alguma experiência de trabalho em equipe e desenvolvimento de Webapps corporativos - eu diria que o Spring é para o desenvolvimento mais rápido de aplicativos (aplicativos da Web), dissociando seus elementos individuais (beans). Um desenvolvimento mais rápido o torna tão popular. O Spring permite mudar a responsabilidade de construir (ligar) o aplicativo na estrutura do Spring. A injeção de dependência da estrutura Spring é responsável por conectar / conectar os beans individuais em um aplicativo em funcionamento.

Dessa maneira, os desenvolvedores podem se concentrar mais no desenvolvimento de componentes individuais (beans) assim que as interfaces entre os beans forem definidas.

O teste dessa aplicação é fácil - o foco principal é dado aos beans individuais. Eles podem ser facilmente dissociados e ridicularizados, para que o teste de unidade seja rápido e eficiente.

O Spring framework define vários beans especializados, como @Controller ( @Restcontroller ), @Repository , @Component para servir a propósitos da Web. O Spring junto com o Maven fornece uma estrutura intuitiva para os desenvolvedores. O trabalho em equipe é fácil e rápido, pois há elementos individuais separados e podem ser reutilizados.

Witold Kaczurba
fonte
0

O framework Spring é definitivamente bom para o desenvolvimento da Web e mais específico para serviços de API repousantes.

É bom para o acima exposto por causa de sua injeção de dependência e integração com outros módulos, como segurança de mola , spring aop , estrutura mvc , microsserviços

Em qualquer aplicativo, a segurança é provavelmente um requisito.
Se você pretende criar um produto que precise de manutenção prolongada, precisará utilizar o conceito Aop.

Se o seu aplicativo tiver muito tráfego, aumentando a carga, você precisará usar o conceito de microsserviços.

O Spring está oferecendo todos esses recursos em uma plataforma. Suporte com muitos módulos .
Mais importante, a primavera é de código aberto e uma estrutura extensível, tem um gancho em todos os lugares para integrar código personalizado no ciclo de vida.

Spring Data é um projeto que fornece integração com seu projeto.


Assim, a primavera pode se encaixar em quase todos os requisitos.

pratik deshai
fonte