Greg Funston wrote:
1. What are the main advantages to Spring?
2. Why should I chose Spring over its competitors?
3. Does the advantages of learning the Spring framework come with any drawbacks/limitations?
I'm certainly going to answer this with some bias, so I welcome others to chime in with their thoughts. That said...
The primary benefits of the Spring framework (IMO) are loose-coupling with dependency injection, declarative programming (transactions, security, etc) with AOP, and a POJO-oriented model for simpler development. Taken together, these foster a development model that is geared toward solving problems rather than satisfying the whims and demands of a server.
On reason to choose Spring over its competitors is because it is the de facto standard for enterprise
Java development. But that means nothing, really...what's important is why it is chosen by so many projects--because of the benefits I mentioned above, plus because the Spring "universe" spans several areas of Enterprise Java development. And, although Spring is far-reaching, that doesn't mean you *must* use it for everything. You are certainly free to pick-n-choose which parts of Spring you want to use and which parts you'll rely on some other mechanism.
I'm not sure I understand the third question...learning Spring (or anything really) expands your mind and way of thinking. I don't see any drawbacks or limitations to that, even if you find Spring isn't for you. If you're asking of Spring has any disadvantages...well, as I said, I approach this question with a bias and have to say "no".
At one time, the major drawback of Spring was that it required that you write *PAGES* of XML, even for the simplest things. But that's no longer true. Spring has a healthy mix of configuration options including a few approaches for annotation-driven development and yes, XML.