CDI ou Spring?

Bom, estou iniciando agora o desenvolvimento Web e de cara me deparei com este paradoxo, utilizar o CDI ou Spring ? Pois percebi que ambos realizam a Injeção de Dependência .

Eu diria: depende do tipo de servidor que você pretende usar. Se for usar um servidor full-JEE como o Jboss ou Glassfish, eu usaria o CDI, pois ele já acompanha o servidor. No caso de usar um Web conteiner como Tomcat ou Jetty, o Spring pode ser uma boa …

Estava lendo aqui… o que o Weld tem haver com tudo isso ? Porque dizem que devemos usar o Weld no CDI ?

CDI é uma especificação, assim como JPA. O Weld é uma implementação dessa especificação, assim como Hibernate:

Hibernate — implementa —> JPA ,

assim como

Weld — implementa —> CDI.

Uma 3a opção é o Google Guice.

Ah entendi. Mas neste caso qual a vantagem em usar CDI ao invés de Spring ?

JPA é uma implementação, a especificação de persistência em Java se encontra aqui:

http://jcp.org/aboutJava/communityprocess/final/jsr317/

vai colocar uma lib no classpath da app, sendo que o J2EE full ja te da o que precisa ?

Pois é mais estou lendo que além do DI o Spring também possibilita programação orientada a aspectos e mais algumas funcionalidades que apenas o CDI não tem.

Se vai precisar dessas funcionalidades, use Spring!

Apenas lembre-se de que, se usar a injeção de dependências dele, seus objetos vão ficar anêmicos.

tem certeza ?

o que gostaria de fazer que fosse orientado a aspectos que com DI não pudesse fazer ?
se fosse usar aparte de segurança do Spring colocaria a lib sabendo que pode usar JAAS ?

cheguei a comprar um livro de Spring, mas sendo sincero, nos dias de hoje com tudo que a spec J2EE tem, não veja mais a necessidade de utilização do Spring.

Eita hehehe… Então o melhor é partir para o CDI mesmo ?

Obs: Na empresa que trabalho utilizamos Spring, por isso gostaria de começar com Spring também.

juro que não sou xiita rsrsrsrsr, é que brother, na real mesmo, tem que havaliar o contexto, se o pessoal é acostumado com a ferramenta e desenvolve rapido utilizando Spring quem sabe não é legal usar ? eu em particular nos dias de hoje não usaria mas as vezes dependendo do escopo do projeto pode valer a pena, abraços.

E o mapeamento de requisições?

E o mapeamento de requisições?[/quote]

não entendi sua pergunta brother, o que tem o mapeamento de requisições ? fala daquelas url´s mapeadas na controller ? depende do framework que vai utilizar ou até mesmo com servlets no webxml ou com servlet 3 via annotation.

Exatamente isso. E não vai precisar de um framework pra DI no final das contas? Não gosto muito do Spring tmb - apesar de ter começado nele - mas tem algumas coisas nele que facilitam. Só acho que no fim das contas pode estar trocando 6 por meia dúzia.

[quote=$ERVER]
Se vai precisar dessas funcionalidades, use Spring!

Apenas lembre-se de que, se usar a injeção de dependências dele, seus objetos vão ficar anêmicos.[/quote]

Usar DI do Spring não deixa objetos anêmicos.
Pode explicar o que você quis dizer com isso?