David,<br><br>I&#39;m going to disappoint you slightly because I don&#39;t think this list is the appropriate place to compare Spring 3.0 and CDI. I would like to avoid an unbounded thread, which these things inevitably turn into. My best advice for you is to simply evaluate the two reference guides and post your conclusions.<br>
<br>What I will say is that the relevance (I&#39;m avoiding the term &quot;benefit&quot;) of CDI is that it&#39;s bundled in the Java EE 6 platform, giving the platform a bean container for the first time. Well, okay, there was a half-hearted attempt at a bean container prior to that. Really, it was just a specialized bean container that only supported one type of bean (EJBs) and a fixed set of platform-bound resource injections (@PersistenceContext, @Resource, etc). Granted, there are still some bumbs to be worked out across the platform. But the steps that were taken in Java EE 6, most notably that it now has a bean container, are pretty damn monumental. <br>
<br>What&#39;s more, for the first time ever, it&#39;s possible to extend Java EE using the CDI extension SPI. That means you can add/modify/remove beans, interceptors, decorators, qualifiers, etc. at startup time, get information about the runtime, and other sorts of tweaking. You could call it Tweak EE (playing off of Tweak UI).<br>
<br>So if something isn&#39;t working out for you, it&#39;s certainly possible that an extension will be able to fill in the void. I&#39;d go so far as to say that a framework like Spring could leverage the extension SPI heavily to integrate itself into Java EE if the developer was looking for that type of bridge. (Experience will tell us if that is true). There are certainly places in Spring today that it has to go searching for information that now the CDI extension SPI could provide for it for free.<br>
<br>That&#39;s my brief sketch of CDI. The advantage that Spring has is that it&#39;s incredibly well-known and, well, it&#39;s at version 3.0. It wouldn&#39;t really be a balanced equation to compare Spring with CDI anyway, since Spring is so much more than just a bean container. If you did a head-to-head comparison, it would have to be with Spring core (and the Java EE integration). But I don&#39;t want to partake in that comparison on this list, as I mentioned before. Besides, it&#39;s the holiday and we don&#39;t want to create a long thread to distract folks from their presents (and family).<br>
<br>-Dan<br><br><div class="gmail_quote">On Sun, Dec 20, 2009 at 7:33 PM, David Geary <span dir="ltr">&lt;<a href="mailto:clarity.training@gmailcom">clarity.training@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
I&#39;ve found this a fascinating thread. I didn&#39;t know that Spring 3.0 had many of the same features as CDI.<br><br>So I can intelligently recommend either Spring 3 or CDI, I&#39;d like to know what are the advantages and disadvantages of each. I read the comments on TSS (&lt;<a href="http://www.theserverside.com/news/thread.tss?thread_id=58858#330454" target="_blank">http://www.theserverside.com/news/thread.tss?thread_id=58858#330454</a>&gt;), and from that thread I surmised that Spring 3.0 and CDI were similar, but I don&#39;t understand the differences. I appreciate, btw, the much more cordial discussion Dan and Jeremy have had on this list.<br>

<br>Dan and Jeremy, it&#39;d be great if you guys could let us know what the pros and cons of each are.<br><br>Thanks,<br><br><br>david<br><br></blockquote></div><br>-- <br>Dan Allen<br>Senior Software Engineer, Red Hat | Author of Seam in Action<br>
Registered Linux User #231597<br><br><a href="http://mojavelinux.com">http://mojavelinux.com</a><br><a href="http://mojavelinux.com/seaminaction">http://mojavelinux.com/seaminaction</a><br><a href="http://www.google.com/profiles/dan.j.allen">http://www.google.com/profiles/dan.j.allen</a><br>