It's not a good idea to specifically warp your project to fit a specific
IDE. IDEs are notoriously subject to change. For my projects, it's a requirement that I be able to do a full build on a machine without any IDE at all, so I typically use
Maven. Which, alas, also warps projects, but is less subject to being wrecked by new versions. Eclipse can adapt pretty much any project to be Maven-friendly while still getting the benefits of the IDE.
I'm going to reverse your questions, since it may make more sense that way.
JSF is built using principles of the Inversion of Control (IoC) paradigm. Using IoC, instead of program components going out and looking for other program components (for example, Service Locators), the IoC framework delivers those components to the seeking components. The advantage to this is that you don't have to explicitly code the seeking logic into components. That means that JSF components can often be implemented as POJOs, which makes them more re-usable, easier to
test in isolation, and more independent of the internals of the subsystems that they are working with.
JSF itself, however, only provides IoC for Managed Beans. It doesn't really support non-JSF beans. The Spring Framework, however, does, and by means of the appropriate JSF plugin, you can integrate the Spring IoC system and the JSF IoC system seamlessly, thus providing "one-stop-shopping" for bean injection.
My primary use for Spring in most JSF webapps is to manage the ORM. I'm using JPA, and Spring provides services such that the grunt work of managing transactions, handling exceptions and other tedious and repetitive jobs is done by Spring itself. I also leverage it to make systems more testable, though. For example, it's not uncommon for my webapp to create and send emails. By implementing the email service as a Spring-injected component, I can use a dummy mailer for testing and switch to the live mailer for production. Since Spring is handling the wiring-together of my beans, it's a minor change to the Spring config file to do this instead of a
Java source code change.