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?
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.
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…
[quote=ManchesteR]
Um deles você já citou, que é a injeção de dependencias.[/quote]
[quote=TangZero ]
Quanto ao IoC do Spring, o mesmo é extremamente útil quando as classe fazem referência apenas a Interfaces e não a Classes concretas.[/quote]
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”.
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
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[/quote]
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.
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[/quote]
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.
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.
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…
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
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?