- Spring is Java.
- Spring is enterprise, a replacement of or addition to traditional J2EE.
- Spring is POJOs (Plain Old Java Object), so no EJBs (Enterprise Java Beans) in all sorts of flavours.
- Spring is Open Sources, so no licence fees.
- Spring is modular, so I can start with its JDBC template, and gradually introduce Dependency Injection (DI, better known as Inversion of Control), Aspect Oriented Programming (AOP) and enterprise service templates.
I tried to learn EJBs. I really, truly did. Several times. Using different methods. But every time I am overwhelmed by the insurmountable heap of knowledge you need to get anything done. And instead of programming, you're constantly 'configuring' in unreadable, endless, and complicated XML files (and to make matters worse, this configuration depends largely on the brand of container you have chosen). There's plenty of tools to help you with these tedious tasks, but is the need for these tools not the best sign that something is seriously wrong with the architecture.
Instead, Spring's inversion of control and modular design, allow me to program vanilla Java and selectively pick services from the container. Better still, if a good implementation of a service exists, Spring doesn't re-invent the wheel, but re-uses the implementation. That makes sense to me.
That's the theory, anyway. Maybe I should give Spring a try?