Eu escrevo aplicativos Java corporativos e serviços da Web no trabalho ( Spring , Hibernate, Maven, RESTEasy) e PHP (CakePHP) e Python (Django) para meus projetos paralelos.
Embora eu veja o valor que a Inversão de controle, a programação orientada a aspectos, etc., que o Spring traz, não tenho certeza de como aplicativos Web massivos que não estão na pilha Java gerenciam sem uma estrutura como o Spring.
Então, os desenvolvedores precisam apenas "tolerar" componentes fortemente acoplados e outras queixas que o Spring elimina ou estou perdendo alguma coisa?
Para quem não conhece o Spring, os recursos que mais usamos são:
Inversão do contêiner de controle: configuração dos componentes do aplicativo e gerenciamento do ciclo de vida de objetos Java,
Programação orientada a aspectos: permite a implementação de rotinas transversais,
Gerenciamento de transações: unifica várias APIs de gerenciamento de transações e coordena transações para objetos Java.