Java.lang.NullPointerException de Session em uma JSP

Olá pessoal do fórum, estou com um problema ao tentar recuperar uma lista em uma JSP. Estou tendo um java.lang.NullPointerException relacionado a uma Session.
Vamos códiogo:

applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans 
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-2.5.xsd">
	
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
		scope="singleton">
		<property name="configLocation">
			<value>classpath:/hibernate.cfg.xml</value>
		</property>
	</bean>
	
</beans>

@Component
public class HibernateUtil implements ComponentFactory<Session> {
			
	@Autowired
	private SessionFactory factory; //recebe a SessionFactory configurada no applicationContext.xml
	private Session session;
	
	public SessionFactory getFactory() {
		
		return factory;
	}
	
	public void setFactory(SessionFactory factory) {
		
		this.factory = factory;
	}

	@PostConstruct
	public void abre() {

		this.session = factory.openSession();
	}

	@Override
	public Session getInstance() {
	
		return factory.openSession();
	}

	@PreDestroy
	public void fecha() {

		this.session.close();
	}

}


public class GenericDao<T> {
	
	@SuppressWarnings("rawtypes")
	private Class persistentClass;

	/**
	 * Injeta a dependência Session através da anotação @Autoriwed.
	 * O bean injetado (nesse caso) vem do método getInstance() da
	 * classe HibernateUtil
	 */	
	@Autowired
	protected Session session;

	public Session getSession() {
		return session;
	}

	public void setSession(Session session) {
		this.session = session;
	}

	@SuppressWarnings("rawtypes")
	public GenericDao(Class pC){
		
		this.persistentClass = pC;
	}

        //MÉTODOS PARA O CRUD DO OBJETO....

}

@Component
public class GarcomDao extends GenericDao<Garcom> {

	public GarcomDao() {
		
		super(Garcom.class);		
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Garcom> getLista() {
		
		return session.createCriteria(Garcom.class)
				.addOrder(Order.asc("nome"))
				.list();
	}	
		
}

//NA MINHA JSP
        <!-- cria a lista -->
	<jsp:useBean id="dao" class="br.com.dao.GarcomDao"/>	
	Garçom:	<select name="registro.keyGarcom">
				<c:forEach var="garcom" items="${dao.lista }">
					<option value="${garcom.id_garcom}">${garcom.nome}</option>
				</c:forEach>
			</select><br>

Na hora que eu acesso a JSP eu recebo um java.lang.NullPointerException com relação a Session na linha return session.createCriteria(Garcom.class)
do método getLista() da classe GarcomDao(debug do programa me confirmou isso).
O estranho é que isso só ocorre quando eu tento recuperar a lista através do jstl na jsp. Em outros pontos da aplicação, como por exemplo, na
hora de inserir ou excluir os objetos através do controller’s a Session é injetada corretamente.Alguma idéia do que pode está ocorrendo???

Abraço a todos