Porque eu não uso Spring

O Urubatan está fazendo uma pesquisa sobre o uso do Spring.

Minha resposta foi simples: Não, por causa do XML.

Mas, na verdade não é só o XML do Spring que faz com que eu não me interesse por ele. Mas a falta de funcionalidades úteis suficiente para mim.

Se eu contextualizar minha situação, talvez, fique mais fácil me enteder… Eu desenvolvo sistemas de informação com interface web. Atualmente estou usando os seguintes frameworks em minha aplicações:

  • Stripes: que é framework mvc para aplicaçõe web. É baseado em anotações e oferece, além de um ótimo front-controller, as funcionalidade de: convensão ao invés de configuração, templates para os JSPs através de taglibs, validação usando anotações e i18n;
  • JPA com o Hibernate como provedor de persistência: Mapeamento Objeto-relacional.
  • Estou usando também a DAOFactory dinâmica que eu apresentei em um outro texto.

As respostas afirmativas, da pesquisa, tratam de 5(cinco) motivos para justificar o uso do Spring, e aqui eu vou justificar o porque eu não uso o para resolver essas funcionalidades:

  1. Container IoC: Das três APIs que eu uso, a única onde a fábrica, ou container IoC se você preferir, do Spring iria me ajudar seria com a fábrica de DAOs. Mas, neste caso, o preço do Spring, isto é, a configuração dele não compensa.
  2. O gerenciamento de transações: como mostrado no texto sobre a DAOFactory dinâmica, eu faço a entidade de negócio controlar o início e fim das transações. E, ainda não vi a vantagem de colocar esse código em um XML. Se a necessidade de transações mudar será por conseqüencia de uma alteração na classe de negócio.
  3. O framework MVC: Como disse anteriormente, utilizo o Stripes como framework mvc. E ele não tem um XML para configurar. Na verdade o Stripes permite que eu resolva um cadastro com uma classe e um JSP sem que a coisa toda pareça uma mesa de natal em familia portuguesa =D
  4. O container AOP: Esta é a funcionalidade do Spring que mais me chama a atenção. Li um texto no site da IBM, no DevelopersWorks, falando sobre o uso de um DAO genérico utilizando o container AOP do Spring para recuperar as NamedQueries do Hibernate. Foi o principal motivo para eu me interessar pelo Spring. Mas, mais uma vez, o XML necessário para essa “mágica” se mostrou improdutivo quando comparado com a quantidade de código necessário para fazer a mesma coisa quando se recebe uma Hibernate Session no contrutor da implementação da interface DAO.
  5. Integração entre os frameworks: Como eu procuro manter as camadas da aplicação bem definidas não estou tendo nenhum problema de integração. No máximo colocar um NamedQuery a mais com o fetch que estava faltando, para evitar os LazyLoadException do Hibernate.

O Spring é uma idéia muito boa. Ajudou muito na melhoria de padrões da especificação Java como o EJB3. Mas para quem reclamava da complexidade da arquitetura de componentes J2EE ele não foi muito feliz ao transportar código Java para código XML. Não que este seja complexo, mas é muito extenso o que o torna cansativo.

Ainda não estou convencido de que código xml seja mais produtivo do que código Java.

Reafirmo que, por hora, respondo ao Urubatan que não uso o Spring por causa do seu XML, desnecessariamente, grande. Mas que, na verdade, eu não uso o Spring porque encontrei alternativas mais produtivas. E que ele não fornece nenhuma funcionalidade indispensável para o desenvolvimento dos sistemas de informação em que eu tenho trabalhado nos últimos 4 anos.

Alguém teria uma situação em que o Spring seria mais produtivo? Um caso em que a factory dele seja muito útil ou mesmo indispensável?

Anúncios

4 opiniões sobre “Porque eu não uso Spring

  1. Bom..

    Algumas coisas que o spring permite além do que você citou:

    * Segurança em objetos de dominio, com acegi (ok, é uma integração com outro projeto mas usa o spring)
    * É um container leve, que oferece infra para projetos Enterprise sem que seja necessário um container JEE (Ele instancia Datasources, gerencia transações, segurança)
    * O controle de transações é bem flexivel e em casos não triviais é mais fácil configurar declarativamente do que programáticamente

    Acho que o spring tem seu valor mas acho também que muita gente o usa apenas por usar (por causa do hype)

    Eu em projetos freelas ainda não senti a necessidade de usa-lo, mas ja participei de inumeros projetos que “usam” spring.

  2. Pingback: Outras razões para não usar o Spring « Beyond Click

  3. pow boa questao, estou aqui na mesma situacao, fui pegar o spring para estudar, para ver o que ele tinha de bom, por ser tao falado e pq um amigo recomendou vc precisa aprender e spring etc. Bem, la vou eu e quando me deparo com o framework, mas complicado que tirar um eletronico de uma criança moderna. Pelo menos, a sua arquitetura nao é tao simples, eles falam eh baixo aprendizado, nao sei se tem baixo aprendizado assim nao. A parte de Factory dele realmente é excelente, mas nao sei se so por causa disso vale a pena, tero trabalhao q temos, e os xmls nem fale nele. outro fator que pesa contra tb, a vantagem ainda eh o uso de annotations nas ultimas versoes. Mas, ainda continou me perguntando, pq eu vou adotar o spring para meu projeto?

    abracos,

  4. Realmente o aprendizado do Spring não me convenceu. Tanto na produtividade quanto na parte de configuração.
    Sinceramente, a base de certificação para Java web se concentra principalmente em Servlets e JSP que é o padrão adotado. Demais frameworks podem sugerir melhoras e flexibilidade. Nesses quesitos, o JSF aliado ao Primefaces consegue além de serem: leves e produtivos, trabalham com o modelo MVC muito bem, além de possuírem diversos componentes com a mesclagem de AJAX.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s