I was looking for some help on CDI APIs. I’m sorry if my question looks naive, I tried looking on net for some high level description on CDI APIs, but couldn’t get it right.
The javadoc says:
Contexts and Dependency Injection (CDI) defines a set of complementary services that help improve the structure of application code.
My question is in EJB 3.X we already have Annotations for helping with DI and injecting resources like PersistenceContext and other kind of resources. So where exactly the CDI APIs will be helpful? In plain web-app/standalone Java programs using J2SE?
EJB 3.0 comes with dependency injection on resource- and EJB-level – which is pretty cool already 🙂
What CDI does (and which is even cooler) – it lowers the barrier to dependency injection to so-called “managed beans” (JSR 316) – which (among others) defines the minimal set of preconditions a class needs to benefit from dependency injection. Just slightly simplifying, one can say that all classes in a CDI project are managed beans and therefore are eligable for DI.
To summarize what CDI brings over EJB 3.0 in terms of DI:
Have a look at the first chapter here, and you’ll get the idea 🙂