aspose file tools*
The moose likes JSF and the fly likes JSF 2.0 and CDI and Spring Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » JSF
Bookmark "JSF 2.0 and CDI and Spring" Watch "JSF 2.0 and CDI and Spring" New topic
Author

JSF 2.0 and CDI and Spring

Mike Curwen
Ranch Hand

Joined: Feb 20, 2001
Posts: 3695

Hi,

So I'm new to JSF and CDI, but not all that new to Spring. I'm reading all sorts of online tutorials. Some of them just use "plain old JSF". Some show you how to replace JSF's managed container, with Spring's. And others talk about JSF, CDI and the "JSR 299 fiasco".

My question is a bit fuzzy, architectural, hand-wavy... I just don't have a firm grasp on the subject matter, I think.

If I'm using JSF and choose to use the CDI annotation (use the JEE CDI container, rather than the 'smaller, less capable' JSF container), then why would I use Spring? Aside from "I like Spring", and "the tutorial showed me how to do it" and "because I can". Is there a *need* to use Spring, if I'm using the move powerful CDI container ?

Thanks.
Brian Enochson
Greenhorn

Joined: Apr 12, 2011
Posts: 14

Hi, this is an interesting question and one I have also looked into without a definite answer. I have read most places where Spring and CDI should not co-exist. I am not convinced this is the final answer and have seen implementations like this (look in the answer, it shows defining a producer which bridges CDI and Spring) http://stackoverflow.com/questions/4144039/injecting-a-spring-bean-using-cdi-inject.

As for a reason I could imagine an existing Spring context file where you would want to reuse this within your application. Also, though I do not have enough experience to know which classes this might be, there are Spring classes that you would want to use and could not be integrated without having the Spring context.

Finally, a reason for having spring might be using AOP constructs for a cross cutting concerns and not covered by CDI.

I would love to hear from anyone with enough experience with CDI and Spring who can add to this conversation and expound on their experience.

Brian


Mike Curwen
Ranch Hand

Joined: Feb 20, 2001
Posts: 3695

Thanks Brian,

That link... is it just me, or does that look pretty hackish to you? Like "forcing" two things together, and for what good reason?

Assuming I'm green fields, and don't particularly "require" anything from the spring framework (or so I suppose)... JSF with CDI... doesn't *need* Spring, right?

It seems to me, like much of the arguments in favour of using Spring's container as the bean manager for JSF, are based on JSF's default container being "weak" in comparison to Spring. And I might even agree with that, but that was all before CDI. But *if* I switch to using CDI... do the arguments go away, or merely change? Are there other reasons for still preferring to use Spring (that is: *don't* use JSF+CDI, use JSF+Spring and *not* CDI, and these are the reasons why...)

Brian Enochson
Greenhorn

Joined: Apr 12, 2011
Posts: 14

Yes, I guess it could be considered hackish if it is a solution not standard in one or the other framework so you are correct.

Read this about CDI and Spring http://java.dzone.com/articles/why-cdi-won%E2%80%99t-replace-spring. I think, at least for me, shows why you may want CDI and Spring in a single application. Granted, I realize normal architectural principles would make it seem not likely you have your JMS code and JSF code in different layers. But, I have done exactly as shown in the link. I had my Web application using JSF for the presentation and portion of its backend functionality involved posting to a JMS queue. As the author states, Spring makes using JMS almost trivial compared to the alternative.

So is this a reason (or use case) where you would use CDI and Spring together?

I really wish someone could jump in who has gone down this route but any users of CDI I have talked to have started using it now and were not users of Spring anyway so they are not having the conflict we are having!
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: JSF 2.0 and CDI and Spring