Because you don't have a transaction manager defined in that config file.
Basically in Spring MVC apps you want and will have two separate ApplicationContexts. One for the web layer, one for the middle tier. The middle tier is where you define your Services, DAOs, DataSource, TransactionManager etc. In the Web Layer you will have your Controllers, MappingHandlers and ViewResolvers. For the middle tier that is usually called applicationContext.xml. The <application>-servlet.xml would be the web layer with controllers etc. The ApplicationContext created for the MiddleTier is called the Parent Application Context, and the one created via the <application>-servlet is the child Application Context. The Child has access to the parent application context classes, but not the other way around. So for an architecture for SpringMVC and lower layers you have
Web Layer - defined in the <application>-servlet,xml
All below defined in the applicationContext.xml
Infrastructure Layer - includes DataSources, SessionFactory, TransactionManager etc
Now the applicationContext.xml you want loaded via the ContextLoaderListener defined in your web.xml and the <application>-servlet.xml is loaded via the DispatcherServlet through its init-param in the web.xml
Hope that helps clear things up. You have to think in terms of two application contexts getting created and ContextLoaderListener is there to create the middle tier beans and the DispatcherServlet for the web tier.