Spring-annotations - pré projeto, spring framework quase sem XML

Aee galera, agora que ja coloquei os fontes online pra quem quiser mesmo, vou colocar aqui no GUJ,

Acho que uma boa parte do pessoal aqui ja trabalhou com Spring Framework.

Bom, a unica coisa que não gosto no spring é o excesso de XML, e se fosse só o dele ainda era de menos, mas temos o do spring, o web.xml, o hibernate.cfg.xml, em alguns casos o faces-config.xml, ou xwork.xml, ou vraptor.xml, ou <coloque o nome do seu framework favorito integrado com o spring aqui>.xml, e assim por diante …

e no caso do spring, ainda temos que colocar no XML todos os DAOs, objetos de negócio, … da aplicação para tirar proveito do IoC.

bom, não quero remover todo o XML, o que é configuração continua em XML, como por exemplo o datasource, …

mas da pra facilitar bastante o trabalho no resto da aplicação, ou seja, coisas que não vão mudar para cada deploy da aplicação, como por exemplo qual a URL deste controller, quais os beans que quero no contexto e os nomes dos mesmos, qual bean é singleton, qual deve ser criado pro request, …

para resolver isto usando o spring framework, eu criei um projetinho que se o pessoal do spring não quiser incluir na branch oficial eu vou tocat como projeto separado mesmo.

quem quiser dar uma olhadinha, testar, … pode baixar do meu blog:
:arrow: Código fonte
:arrow: Primeiro post sobre a ideia
Segundo post sobre a ideia
Terceiro post sobre a ideia

Comentários, opiniões, criticas e chingamentos serão bem vindos.
e se alguem quiser dar uma ajuda também não fico bravo :smiley:

Legal a ideia, principalmente uso do XFire :D.

Sugestões:

  1. Integre a iniciativa de annotation já existente do Spring.
    Eu baixaria o código do Spring e faria um merge (necessariamente um belo refactory será necessário) com a iniciativa do Spring em Annotations. E então faria um contribuição para eles. Normalmente contribuições são mais do que bem aceitas.

  2. O XFire já têm Annotations e suporte ao Spring. Para ser honesto não sei se a sua implementação é maior ou menos do que a do XFire, mas se você acha que têm a contribuir faça o mesmo com XFire e contribua. Nesse caso especifico, você pode falar comigo (sou commiter do XFire) ou então diretamente com o Dan que é um cara muito gente boa, que vai ser aceito de muito bom grado.

Já que estamos neste contexto:

Qual a relevância do Spring num cenário Java EE 5.0? O que o Spring traz de vantagem ou é só a mesma funcionalidade com sintaxe diferenciada? O Spring é vantagem em Java EE 1.3-4 mas e agora, por que eu usaria um produto e não um padrão?

O mesmo eu pergutnaria para o Hibernate, mas este está aderente ao padrão, o Spring não.

(ps: é pergunta mesmo, sem ironia)

[quote=juzepeleteiro]Legal a ideia, principalmente uso do XFire :D.

Sugestões:

  1. Integre a iniciativa de annotation já existente do Spring.
    Eu baixaria o código do Spring e faria um merge (necessariamente um belo refactory será necessário) com a iniciativa do Spring em Annotations. E então faria um contribuição para eles. Normalmente contribuições são mais do que bem aceitas.
    [/quote]
    Ja enviei a contribuição de código pra eles, não cheguei a fazer um patch, mas mandei pra eles :smiley:

[quote=juzepeleteiro]
2) O XFire já têm Annotations e suporte ao Spring. Para ser honesto não sei se a sua implementação é maior ou menos do que a do XFire, mas se você acha que têm a contribuir faça o mesmo com XFire e contribua. Nesse caso especifico, você pode falar comigo (sou commiter do XFire) ou então diretamente com o Dan que é um cara muito gente boa, que vai ser aceito de muito bom grado.[/quote]
Como ta esrito em um dos posts, não me lembro qual agora, eu comecei a implementar o suporte pra webservices, depois vi que ja tinha pronto no XFire e hoje o que tem ali é só um exemplo de configuração do XFire pra trabalhar junto :smiley:
mas o código é todo do XFire, tem só um exemplo de applicationContext.xml pra usar ele.

[quote=urubatan][quote=juzepeleteiro]Legal a ideia, principalmente uso do XFire :D.

Sugestões:

  1. Integre a iniciativa de annotation já existente do Spring.
    Eu baixaria o código do Spring e faria um merge (necessariamente um belo refactory será necessário) com a iniciativa do Spring em Annotations. E então faria um contribuição para eles. Normalmente contribuições são mais do que bem aceitas.
    [/quote]
    Ja enviei a contribuição de código pra eles, não cheguei a fazer um patch, mas mandei pra eles :D[/quote]

Pode até parecer arrogância, mas quando não é patch não dá nem para olhar. Para se ter uma chance têm que ser patch com test case, e se tiver um exemplo de use case é melhor ainda.

Imagine a quantidade de coisas do tipo que aparecem todo dia, e até entender o que você fez e integrar, as vezes é maos fácil fazer você mesmo do zero. :wink:

[quote=juzepeleteiro][quote=urubatan][quote=juzepeleteiro]Legal a ideia, principalmente uso do XFire :D.

Sugestões:

  1. Integre a iniciativa de annotation já existente do Spring.
    Eu baixaria o código do Spring e faria um merge (necessariamente um belo refactory será necessário) com a iniciativa do Spring em Annotations. E então faria um contribuição para eles. Normalmente contribuições são mais do que bem aceitas.
    [/quote]
    Ja enviei a contribuição de código pra eles, não cheguei a fazer um patch, mas mandei pra eles :D[/quote]

Pode até parecer arrogância, mas quando não é patch não dá nem para olhar. Para se ter uma chance têm que ser patch com test case, e se tiver um exemplo de use case é melhor ainda.

Imagine a quantidade de coisas do tipo que aparecem todo dia, e até entender o que você fez e integrar, as vezes é maos fácil fazer você mesmo do zero. :wink:

[/quote]
Na verdade não tem tantos assim não, eu procurei no JIRA antes de mandar :smiley:
ja mandei outras contribuições de modo semelhante e foi incluida no branch oficial sem problema nenhum.

Ainda mais este tipo de coisa que não mexe no código que eles ja tem, é uma adição de classes, que basta renomear os packages e subir para o CVS.
o spring hoje não tem quase nada de anotações, nem em desenvolvimento ainda …
eles realmente gostam de XML.

Tem suporte para anotações para transação e AOP, as duas coisas o código esta dentro dos respectivos beanfactorypostprocessors, ou seja, não tem nada nem centralizado em parte nenhuma do spring framework ainda :smiley:
só esta a baixo da arvore “tiger/src” no projeto …

[quote=pcalcado]Já que estamos neste contexto:

Qual a relevância do Spring num cenário Java EE 5.0? O que o Spring traz de vantagem ou é só a mesma funcionalidade com sintaxe diferenciada? O Spring é vantagem em Java EE 1.3-4 mas e agora, por que eu usaria um produto e não um padrão?

O mesmo eu pergutnaria para o Hibernate, mas este está aderente ao padrão, o Spring não.

(ps: é pergunta mesmo, sem ironia)[/quote]
Realmente a maior parte das coisas que o spring tem de “vantagem” foi incorporada no J2EE 5 (algumas até melhoradas)
não cheguei a trabalhar direito ainda com J2EE 5, mas acho que não teria muita necessidade do spring num ambiente destes.

mas quantos containers J2EE 5 ja estão disponiveis?
e onde eu tiver apenas um Tomcat 6 rodando? sem o suporte a EJB3, …

eu diria facilidade de configuração se aquele XML não fosse um pé no saco :smiley:

resumindo, até o momento meu pouco conhecimento de J2EE 5 não me permite uma resposta mais completa, mas pelo pouco que vi, acho que em um ambiente full j2ee 5 não tem muita vantagem em usar o spring não.

agora considerando que ainda hoje, um dos clientes em que trabalho ta rodando um websphere com jdk 1.3, acho que um spring facilitado ainda vai ser vantagem por bastante tempo :smiley:

[quote=pcalcado]
(ps: é pergunta mesmo, sem ironia)[/quote]

não achei que era ironia, mas realmente não deu tempo ainda de estudar J2EE 5 a fundo, e sempre se tem os servidores legados e os clientes chatos que não atualizam o parque de modo algum :frowning:

Não quis dizer de annotações, me expressei mal, eu quis dizer código sem ser em patch que tem que ser entendido, escrito teste e use case para “pegar” a coisa, entende?

[quote=urubatan]
Ainda mais este tipo de coisa que não mexe no código que eles ja tem, é uma adição de classes, que basta renomear os packages e subir para o CVS.
o spring hoje não tem quase nada de anotações, nem em desenvolvimento ainda …
eles realmente gostam de XML.[/quote]

Eh verdade que têm pouca, mas eles têm uma “framework” de annotações pronto, e eu acho que você deveria utiliza-lo pelo menos. E se tivesse suporte ao commons-attribute então era batata.

[quote=urubatan]
Tem suporte para anotações para transação e AOP, as duas coisas o código esta dentro dos respectivos beanfactorypostprocessors, ou seja, não tem nada nem centralizado em parte nenhuma do spring framework ainda :smiley:
só esta a baixo da arvore “tiger/src” no projeto …[/quote]

Eh, eu posso estar enganado e para dizer a verdade até acredito que sim, uma vez que considero que vc conhece o Spring melhor do que eu (eu até pouco tempo atraz era um Pico user), mas eu lembro de ter lido no Javadoc um Annotation processor, coisa do tipo, mas pode ser que não seja lá o que eu to pensando.

De qualquer forma, eu gostei muito de não ter que confirurar meus Controller no XML.

Essa semana e a outra eu estou super ocupado, mas depois, eu vou dar uma lida no seu código e posso te ajudar nisso se quiser. Só gostaria que você coloca-se num SF da vida (na verdade, em algum lugar com Subversion) e muda-se o nome do pacote para um nome menos proprietário. Que tal?

Me diz uma coisa, como você faz scan das classes no classpath? Dê uma olhada no Steam que me parece que os caras fizeram um trabalho pesado na otimização disso.

Praticamente todos os vendors já possuem suas versões mas calma, a spec foi aprovada semana passada :wink:

De qualquer forma, acho que se alguém já teve o processo de migrar para Java 5.0 e pode, por exemplo, usar Spring com annotations, não vai ter muita dificuldade em migrar.

Uma das grandes vantagens do EJB 3.0 é poder ser embarcado em praticamente qualquer coisa :wink:

http://docs.jboss.org/ejb3/embedded/embedded.html

[quote=urubatan]
agora considerando que ainda hoje, um dos clientes em que trabalho ta rodando um websphere com jdk 1.3, acho que um spring facilitado ainda vai ser vantagem por bastante tempo :D[/quote]

Argh… mas aí eles não podem, por exemplo, suar annotations. Eu gosto do Spring e o utilizo em ambientes Java EE 1.3-4, mas não sei o que pensar do futuro…

Acho que ou o Rod Johnson e seu time pensam em algo muito novo ou se juntam ao padrão, do contrário não vai tr muito mercado em 5 anos. De qualquer modo estou suando Hibernate 3+ Spring 1.2 num projeto novo em java 1.4.2 container 1.4 e não tenho que reclamar. Em Java 5 eu provavelmente não faria isso…

Urubatan, nos deixe informados do aceite(ou não) do spring annotations, como também da evolução dele :wink:

Opa, tranquilo?
O projeto esta no java.net ja http://spring-annotation.dev.java.net
Tem um binário disponivel para download no site, e estamos preparando exemplos ja …
O mini curso que ministrei no WebDays ja estava utilizando o spring-annotation, ja esta em produção em um cliente meu, e em mais duas empresas aqui no brasil, em pouco tempo vou ver se coloco alguns cases no site :smiley:
o pessoal da Probel esta utilizando ele (o Mauro que colocou la) nas aplicações novas, e estão adorando …
E a minha palestra no evento do RSJUG da semana que vem vai ser um tutorial sobre o Spring Annotation também (Spring + Hibernate + Spring-Annotation).
Vai estar bem legal o evento, quem quiser ir no evento, espero que assista a minha palestra, o exemplo que vou fazer vai mostrar como pode ser fácil desenvolver uma app web com o spring annotation :smiley:
bom, quem quiser ir no evento do RSJUG é só se inscrever aqui: http://www.rs.sucesu.org.br/inscricao/5java/

Acho que semana que vem ja deve ter um exemplo disponivel no site do projeto, utilizando spring-annotation e spring MVC para implementar a mesma aplicação MyBooks do exemplo do mentaway, e na outra deve ter um exemplo da mesma aplicação implementada usando JSF e spring-annotation.
Acho que vou colocar a app que vou fazer no tutorial como exemplo no site também, ai fica mais fácil de mais pessoas começarem a usar :smiley:

Só precisamos de voluntários para ajudar na documentação, estou com pouco tempo para mexer nisto atualmente :smiley: