Hello...
Spring can be used in all parts of your project. Should it be used? That is really up to you. I think that is the nice part about Spring, you don't have to use it for every layer. I think the most difficult part to learn is the DI aspect of Spring. It is really a simple concept, but can take a while to make sense. Once you "get" it though, you sometimes wonder how you ever worked without it. By being able to inject your beans into your classes, you can code very quickly and switch out implementations quickly.
You can replace
Struts with Spring MVC. Spring MVC is a bit different than Struts, but by no means any less effective or usable. I have done projects using both. I am really hooked on the Spring MVC right now, and would probably use it as my MVC framework of choice. (Still need to work with Struts 2 though...that could change my mind.) One of the main advantages I see with Spring MVC over Struts is that your web forms are bound directly to your backing object. So in your Controller (Action in Struts), you don't have to build your object from the form parameters. It will automatically do that, and do any validation that you have written up.
Your EJBs could also be replaced. By using Spring you can just make POJOs and use them. You can apply transactions and security through AOP, and you don't need to have an
EJB container. So you could do everything in your web container.
The Hibernate side. We still use Hibernate, but the way Spring can help you here is by using the HibernateTemplate. It has all your connection logic built into it. You just grab your template, and execute your commands. You no longer need to worry about getting a connection, running your command and closing the connection. It is all done for you. And if you want to get away from Hibernate, there are also Templates for other ORMs or just
JDBC calls.
Hope this helps...
Nick