I've read the hype, read the user docs and I've even purchased Rod Johnson's latest book. I've even spent an evening or two trying it out myself. While I can't (or haven't yet) convince myself that the Spring Framework is the second coming of Java development, I can't help wonder if I'm missing the point entirely and can't see what the masses are raving about.
The most common argument goes like this, "it's amazing, I can develop with MySQL on my workstation and then with the flip of a switch my application deploys to Oracle|DB/2|[insert industrial strength db here]".
In a corporate environment where choices are sometimes not plenty, is this pluggable feature (ie. Hibernate, iBatis, JDBC, etc) really really that beneficial?
I work mostly with large corporations with large databases and we integrate many legacy applications with newer modern systems (ie. typical J2EE layer above the aging but still necessary mainframe legacy application). I have rarely had the luxury of simply creating/installing a database on my workstation to develop against and simply deploy against the official one. The problem usually stems from lack of data (or abundance of it depending on which side you wish to view it from). I'm not developing petstore applications or shopping cart systems for ecommerce sites. We're dealing with massive amounts of data, the data that is the backbone of your business logic/applications. Without the data model from that legacy database, you don't have much of an application. We're not talking about a toy USER table with the corresponding ADDRESS table and whatever dinky little model you can imagine and populate with a few rows of test data. Sure you can harp on how it's useful for a new application, etc. but IMO this is a rarity in large corporate system development. At best, you might have new tables that are linked with pre-existing data but it's unlikley you get to create that application scratch from the ground up.
Here's something I've noticed in most places I've worked, Companies don't change database servers very often. Ok, I shouldn't make such a generalization because I know there are all those little shops out there who started with MySQL, outgrew it and upgraded to postgresql or hell even spent a few bucks and bought one of the commercial databases (you get my point). This just strengthens my point though, those are probably small companies evolving their infrastructure as needs grow. Large companies rarely switch database vendors. I'm not going to go into specifics as to why but to be brief just consider the amount of work to do data conversion, upgrading all applications that use the data and what do you do about all those archived tapes?
In my experiences, the argument that I quoted above doesn't hold much value in large organizations. Yet, I can't be the only one who thinks this...the entire blog nation can't be wrong.
What I do see is a lightweight container with an assemblage of useful frameworks from the Java OSS community, sort of a revolutionary, underground J2EE movement fighting against the evil doctrine evangelized by Sun, aka "Java Enterprise BluePrints".
Someone enlighten me.
Before you start flaming, let me add a disclaimer that I actually think Spring is cool. I'm just struggling to understand it's purpose. I'm actually working on an EJB application at the moment and I've thought of using Spring's BeanFactory but I ran into problems when trying to create the BeanFactory in my ejbCreate() (others have reported similar problems in the forums), so I've put that little project aside while I work on real stuff.