Es gibt hier einen interessanten Blog-Post, 5 Reasons why I think I will not use Spring.
Gründe gegen Spring?
Die Hauptargumente sind die langsame Start-Up Zeit des Containers, die nicht gerade schlanke Konfiguration, XML als Konfigurations-Format und nicht zuletzt die mangelhafte Typprüfung bei der dependency-injection.
Auch die entsprechende Diskussion auf TSS sollte man sich zu Gemüte führen, wenn man an dem Thema interessiert ist.

Ich denke Spring bietet eine ganze Menge mehr, als nur Dependency-Injection, und auch wenn einer der Kritikpunkte gerade der ist, dass die ganze Applikation anfägt vom Spring Framework abhängig zu sein, sobald man Features außerhalb von spring-core verwendet, so halte ich das für akzeptabel.
Von irgendwas ist man schließelich immer abhängig, und wenn ich eine Anwendung erstelle, die Jakarta-Commons verwendet, bin ich davon ja auch abhängig.

Abseits der „Eleganz“ oder „Loose-Kopplungs“ Diskussionen sollte man vor allem sehen, dass das Spring Framework einen echten Nutzen bringt, der derzeit durch kein anderes Framework so umfassend abgedeckt wird.

Auch wenn es keinen Standard gibt, hat das Spring Framework doch einen de-facto Standard geschaffen, und Anwendungen die entsprechend der Spring Philosohpie entwickelt wurden, können leicht durch andere Entwickler betreut werden. Umgekehrt fällt es mir als Spring-affinen Entwickler leicht, mich in andere Projekte einzuarbeiten.

So macht Java dann Spaß – Learn once, work everywhere.