I am a bit of a heretic in my frameworks in that I don’t really like Spring. I don’t like it at all, in fact. I do recognise that it does a genius bit of work in providing an Enterprise framework for Web Container based applications and that it has created a huge and much needed kick up the ass for enterprise frameworks in general but I don’t like it.
For a start I don’t really get it. As it’s grown it seems to have acquired all the traits of the J2EE frameworks it set out to replace. It has those weird sprawling configuration files, it has loads of modules that all do different things in similar ways, it has a high learning curve.
Using Guice has put all my peeves about Spring into a context. Guice is lightweight, it is written in Java, its configuration can be traced through IDE tools. It only does one thing and it does that in an intuitive and powerful way.
Spring 2.5 have been released recently with the all important Annotation support. I tried to take a look at it again but ended up huffing off once again. I am certain that my problem is documentation, almost all of it is written in the form: “Just add this to your web.xml and you’re good to go!”. Great, but I just want to try the damn thing!
The terminology is also clunky, compare Guice’s @Inject to Spring’s @Autowired. I think they do the same functional job but I don’t really know as I don’t know what Autowired is meant to mean.
Spring is so ubiquitous that I expect I will have to learn it at some point but at the moment I am happy for that moment to come to me.