Então, estou iniciando um projeto totalmente novo em Java e estou pensando em usar o Spring. Por que estou considerando a primavera? Porque muitas pessoas me dizem que eu deveria usar o Spring! Sério, sempre que tentei fazer com que as pessoas explicassem exatamente o que é Spring ou o que faz, elas nunca podem me dar uma resposta direta. Eu verifiquei as introduções no site SpringSource, e elas são realmente complicadas ou realmente focadas em tutoriais, e nenhuma delas me dá uma boa idéia de por que devo usá-la ou de como facilitará minha vida. Às vezes, as pessoas usam o termo "injeção de dependência", o que me confunde ainda mais, porque acho que tenho uma compreensão diferente do que esse termo significa.
Enfim, aqui está um pouco sobre meu histórico e meu aplicativo:
Desenvolvo em Java há algum tempo, desenvolvendo back-end na web. Sim, faço muitos testes de unidade. Para facilitar isso, normalmente faço (pelo menos) duas versões de um método: uma que usa variáveis de instância e outra que usa somente variáveis que são passadas para o método. O que usa variáveis de instância chama o outro, fornecendo as variáveis de instância. Quando chega a hora do teste de unidade, eu uso o Mockito para simular os objetos e depois faço chamadas para o método que não usa variáveis de instância. Isso é o que eu sempre entendi como "injeção de dependência".
Meu aplicativo é bem simples, da perspectiva do CS. Pequeno projeto, 1-2 desenvolvedores para começar. Principalmente operações do tipo CRUD com um monte de pesquisas ativadas. Basicamente, um monte de serviços web RESTful, mais um front-end da web e, eventualmente, alguns clientes móveis. Estou pensando em fazer o front-end em HTML / CSS / JS / JQuery direto, então não há planos reais para usar o JSP. Usando o Hibernate como um ORM e Jersey para implementar os serviços da web.
Eu já comecei a codificar e estou realmente ansioso para obter uma demonstração por aí que eu possa comprar e ver se alguém quer investir. Então, obviamente, o tempo é essencial. Eu entendo que o Spring tem bastante curva de aprendizado, além de parecer que precisa de um monte de configurações XML, o que eu normalmente tento evitar como uma praga. Mas se isso pode facilitar minha vida e (especialmente) se isso pode tornar o desenvolvimento e os testes mais rápidos, estou disposto a morder a bala e aprender o Spring.
Então por favor. Eduque-me. Devo usar o Spring? Por que ou por que não?