Por que usar Spring Framework?  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
nadilsons
JavaGuru
[Avatar]

Membro desde: 25/09/2006 23:10:20
Mensagens: 222
Offline

Bom dia,

Eu comecei a utilizar o Spring framework por curiosidade. Realizei algumas injeções de dependências (que nao deixam de ser um tipo de inversao de controle)... mas fiquei intrigado sobre a razão e/ou benefício de usar o framework para realizar as injecões das classes... por que de qualquer modo vai existir o acoplamento das classes envolvidas.

Desculpem-me a ignorância, mas por que usar o spring? Qual o benefício?

Muito obrigado,

Nadilson

Jesus é o caminho, a verdade e a vida!
Reflection DSL - http://code.google.com/p/reflection-dsl
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

Existem vários fatores.

Um deles você já citou, que é a injeção de dependencias.
Outras pessoas gostam de utilizar o SpringMVC.
Eu particularmente gosto muito do controle transacional do Spring, principalmente integrando com o Hibernate.

Agora sobre a injeção de dependencias você elimina/reduz o acoplamento, porque você não vai mais instanciar a classe diretamente de outra classe, e sim injetar ela onde você quiser. Essa injeção é muito utilizada em sistemas web e também utilizada quando você injeta um objeto comum para várias classes, por exemplo, DAO.

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
TangZero
Java Ninja
[Avatar]
Membro desde: 23/01/2007 16:00:46
Mensagens: 270
Localização: São Paulo
Offline

Tem outros motivos também...

eu mesmo adoro os templates JDBC do Spring. Eles facilitam muito operações CRUD.

Quanto ao IoC do Spring, o mesmo é extremamente útil quando as classe fazem referência apenas a Interfaces e não a Classes concretas. Você poderá injetar qualquer objeto que possua aquela interface....muito útil se você quiser mudar a implementação de uma camada do seu sistema...as alterações vão ficar apenas nas implementações.....

O MVC dele, eu acho "meia-boca"....prefiro o WebWork...


TangZero

-SCJP 6
-SCWCD 5
-SCBCD 5



[WWW]
nadilsons
JavaGuru
[Avatar]

Membro desde: 25/09/2006 23:10:20
Mensagens: 222
Offline

ManchesteR wrote:
Um deles você já citou, que é a injeção de dependencias.


TangZero wrote:
Quanto ao IoC do Spring, o mesmo é extremamente útil quando as classe fazem referência apenas a Interfaces e não a Classes concretas.


Muito obrigado por suas respostas, mas entao... esses benefícios eu conseguiria utilizando apenas inversao de controle... sem a necessidade do spring... eh essa parte q eu nao entendi do "por que usar o spring".

Obrigado

Jesus é o caminho, a verdade e a vida!
Reflection DSL - http://code.google.com/p/reflection-dsl
fabiofalci
GUJ Master
[Avatar]

Membro desde: 11/04/2006 09:23:14
Mensagens: 1057
Localização: Porto Alegre - RS
Offline

Olá!

Sim, para usar inversão de controle, seria interessante usar um framework para isso...
Pq usar o spring?
Pq ele eh, entre outras coisas, um IoC Container

http://static.springframework.org/spring/docs/2.0.x/reference/beans.html
[WWW] [MSN] [ICQ]
eric_jf
JavaEvangelist

Membro desde: 07/07/2006 12:28:12
Mensagens: 393
Offline

nadilsons wrote:Bom dia,

Eu comecei a utilizar o Spring framework por curiosidade. Realizei algumas injeções de dependências (que nao deixam de ser um tipo de inversao de controle)... mas fiquei intrigado sobre a razão e/ou benefício de usar o framework para realizar as injecões das classes... por que de qualquer modo vai existir o acoplamento das classes envolvidas.

Desculpem-me a ignorância, mas por que usar o spring? Qual o benefício?

Muito obrigado,

Nadilson


Antes eu tinha a mesma duvida que vc e não entendia porque usar spring.
Até começara a trabalhar em uma empresa que tem mais de um ambiente para o sistema.
Quando vc tem um ambiente para desenvolvimento um outro para homologação (testes) e outro para produção.

Algumas variáveis não vão ser as mesmas nos 3 ambientes, tipo endereço do site ou um banco mais rapido para o desenvolvimento.
Jair Rillo Junior
Moderador
[Avatar]

Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline

nadilsons wrote:

Muito obrigado por suas respostas, mas entao... esses benefícios eu conseguiria utilizando apenas inversao de controle... sem a necessidade do spring... eh essa parte q eu nao entendi do "por que usar o spring".

Obrigado


Se você quer apenas IoC, você pode utilizar outro IoC Container como o PicoContainer por exemplo. Acho que a utilização do Spring agrega valor quando você utiliza outros fatores além do IoC/DI, como por exemplo, SpringMVC, Controle Transacional, tem o modulo AOP, etc etc etc.

Sobre o SpringMVC, eu também acho ele meia boca, e uma das grandes vantagens do spring IoC é que é super fácil integrar ele com outros frameworks MVC, por exemplo, o Webwork/Struts 2.

Jair Rillo Junior

http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate
nadilsons
JavaGuru
[Avatar]

Membro desde: 25/09/2006 23:10:20
Mensagens: 222
Offline

Obrigado a todos pela atencao.

[]'s

Nadilson

Jesus é o caminho, a verdade e a vida!
Reflection DSL - http://code.google.com/p/reflection-dsl
lcampos
Smalltalk

Membro desde: 01/09/2007 22:30:51
Mensagens: 1
Offline

Penso que a dúvida do Nadilson deveu-se ao fato de que em muitos exemplos por ai na internet, não se utiliza uma interface e se injeta uma implementação que já é referenciada na classe que recebe a injeção. Nos exemplos, a mesma classe referenciada é injetada, de forma que realmente não haveria muito ganho, afinal de contas, nesses exemplos, o acoplamento é quase o mesmo que instanciar diretamente com um "new".

A vantagem existe a partir do momento que se projeta para uma "interface" (entenda-se como interface Interface, classe abstrata...), então uma implementação da mesma pode ser injetada utilizando arquivos de configuração para se determinar qual a implementação desejada.
lavh
GUJ Master

Membro desde: 30/07/2006 16:09:55
Mensagens: 1311
Offline

Para fazer teste tbm o Spring é uma mão na roda.

Por exemplo, ao invez de vc injetar sua classe DAO, na hora do teste você injeta um mock que simula
esse DAO. Daí você faz testes da sua regra de negócios como deve ser, sem nenhuma interferência externa.
E fazer isso com o Spring é muito fácil...
WilliamSilva
Moderador

Membro desde: 02/03/2005 11:08:44
Mensagens: 1747
Localização: Santos -SP.
Offline

Uma outra solução seria o Guice .:
http://www.guj.com.br/posts/list/54508.java#286228

= William Silva =
iSHARE - Document Management System
[Email] [WWW] [MSN]
Maracuja
GUJ Ranger
[Avatar]

Membro desde: 28/03/2006 10:18:44
Mensagens: 940
Localização: Behind the screen
Offline

Olha, o spring é bem interessante; mas se você esta começando uma aplicação nova, vale dar uma olhada na especificação EJB3 e no JPA; ou quem sabe usar o Jboss Seam que é mto podereso, fazendo inclusive "bijeção de dependência";

"Nunca deixarei de reclamar, mas espero reclamar de coisas melhores a cada dia..." Um amigo muito sabio
Scopel
HelloWorld

Membro desde: 09/09/2008 20:42:29
Mensagens: 14
Offline

Olá estou começando a explorar o Spring juntamente com AOP...
Se alguem tiver algum material por favor me informe...

Tbm estou na duvida.. pq usar Spring??? Esta mto cru a ideia deste framework.. estou tentando se aprofundar para ver se tens vantagens.. conto com apoio de vcs abracos
renatogrosz
Entusiasta Java

Membro desde: 22/04/2009 08:22:41
Mensagens: 18
Offline

Uma fábrica que gera instancias da implementacao da interface não é a mesma coisa?
mfidelis
Debugger
[Avatar]

Membro desde: 09/04/2011 10:36:40
Mensagens: 52
Offline

Cara, queria aprender sobre o hibernate.... tipo ele substitui uma classe que eu use para fazer a conexao ou é somente uma "ajudinha"...posso estar falando besteira e tals... mas como eu disse anteriormente, quero aprender sobre o Hibernate, entao... alguem pode me dar uma base de seus beneficios?
[MSN]
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team