8O
Cara, vou começar mostrando um exemplo prático. O Spring ajuda a fazer esse código:
public List getBikes( ) throws Exception {
List bikes = null;
Session s = null;
try {
s = mySessionFactory.openSession( );
bikes = s.find("from Bike");
}catch (Exception ex) {
//handle exception gracefully
}finally {
s.close( );
}
return bikes;
}
Ficar assim:
public List getBikes( ) {
return getHibernateTemplate( ).find("from Bike");
}
Notou alguma diferença? 
Pois bem, o Spring serve para deixar o código mais simples. E isso
significa que seu código vai ser mais fácil de entender, manter e extender.
E como o Spring faz essa mágica? :?:
Essa simplicidade é apenas um dos benefícios de se usar IoC (Inversão de Controle). Um outro benefício é o fato de tornar as suas classes muito mais testáveis ( através da combinação de JUnit + EasyMock).
Bom, isso são os benefícios de se usar apenas o básico (core) do Spring.
Mas ele é muito mais que isso!
Ele possui um próprio framework MVC, de tal forma que você pode escolher usar o Struts ou ele. Ou outros melhores como Tapestry, JSF e WebWork.
Você pode facilmente AOP também. E ainda ganha facilidades ao implementar Trasações, outras formas de persistência, e mais um motão de coisas!
Já que o Spring é composto de vários bloquinhos (módulos independentes), comece pelo Core e vá estudando os outros um a um. 
Para saber mais: Five Things I Love About Spring