Erro na definição de bean Spring + JSF

Olá pessoal… estou começando os estudos sobre o Spring Framework e estou tendo algumas dificuldades…
Esse é o meu primeiro projeto integrando o Spring 3.1.1 com o JSF 2.

É o seguinte… defini meu arquivo applicationContext.xml da seguinte forma:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
		 xmlns:context="http://www.springframework.org/schema/context" 
		 xmlns:tx="http://www.springframework.org/schema/tx" 
		 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-3.0.xsd 
		                     http://www.springframework.org/schema/tx 
		                     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
  <!--  Seta anotaçoes para serem usadas pelo Spring --> 
  <context:annotation-config /> 
  <!--  Define o pacote onde o Spring vai procurar por beans anotados --> 
  <context:component-scan base-package="br.com.ce.controller,br.com.ce.dao" /> 
  <!--  define que as transaçoes irao ser anotadas --> 
  <tx:annotation-driven /> 

  <!-- Mapeamento da implementação de GenericDAOImpl -->
  <bean id="genericDAO" class="br.com.ce.dao.impl.GenericDAOImpl"/>
  
  <!-- Mapeamento da implementação de EquipamentoFacade -->
  <bean id="equipamentoFacade" class="br.com.ce.controller.EquipamentoFacade">
		<!-- Possibilita a injeção de GenericDAOImpl em EquipamentoFacade, por meio do construtor -->
  		<constructor-arg ref="genericDAO"></constructor-arg>
  </bean>
 
  <!--  Configuracao do Banco de Dados --> 
  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
     <property name="driverClassName"        value="org.postgresql.Driver" />
     <property name="url"                    value="jdbc:postgresql://linux4.faespsenar.com.br:5432/pg_ce" />
     <property name="username"               value="faespsenar" />
     <property name="password"               value="!faespsenar@" />
  </bean>
  <!--  Configuracao do Hibernate --> 
  <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  	<property name="persistenceUnitName" value="ce" /> 
	<property name="dataSource" ref="dataSource" /> 
	<property name="jpaVendorAdapter">
	 	<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
	  		<property name="databasePlatform" value="org.hibernate.dialect.PostgreSQLDialect" /> 
	  		<property name="showSql" value="true" /> 
	  	</bean>
	</property>
  </bean>
  <!--  Configuracao do gerente de transacoes do Spring --> 
  <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
	<property name="entityManagerFactory" ref="entityManagerFactory" /> 
  </bean>
</beans>

Porém, quando subo o serviço do TOMCAT é exibida a seguinte msg de erro:

GRAVE: Context initialization failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'equipamentoFacade' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.com.ce.dao.impl.GenericDAOImpl]: : No matching bean of type [br.com.ce.dao.impl.GenericDAOImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.ce.dao.impl.GenericDAOImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1568)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1558)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.ce.dao.impl.GenericDAOImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:924)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:793)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723)
	... 25 more
20/04/2012 12:56:02 org.apache.catalina.core.StandardContext listenerStart
GRAVE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'equipamentoFacade' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.com.ce.dao.impl.GenericDAOImpl]: : No matching bean of type [br.com.ce.dao.impl.GenericDAOImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.ce.dao.impl.GenericDAOImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730)
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1035)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:939)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4779)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5273)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1568)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1558)
	at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [br.com.ce.dao.impl.GenericDAOImpl] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:924)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:793)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723)
	... 25 more

Minha classe Dao está codificada assim:

@Repository("genericDAO")
public class GenericDAOImpl<T> implements GenericDao<T> {

	@PersistenceContext
	private EntityManager entityManager;
	private Class<T> type;

	public GenericDAOImpl(Class<T> type) {
		this.type = type;
	}

	public GenericDAOImpl() {}

	@Override
	@Transactional
	public void insert(T entity) {
		this.entityManager.persist(entity);
	}

	@Override
	@Transactional
	public void update(T entity) {
		this.entityManager.merge(entity);
	}

	@Override
	@Transactional
	public void delete(T entity) {
		this.entityManager.remove(entity);
	}

	@Override
	@Transactional
	public void deleteByID(Long entityID) {
		this.delete(this.selectByID(entityID));
	}

	@Override
	@Transactional(readOnly=true)
	public Collection<T> listAll() {
		return this.hqlQuery("from " + this.type.getName()).list();
	}

	@Override
	@Transactional
	public T selectByID(Long entityID) {
		return this.entityManager.find(this.type, entityID);
	}

	@Override
	@Transactional
	public final org.hibernate.Query hqlQuery(String commandHQL) {
		return this.getSession().createQuery((commandHQL == null ? "" : commandHQL)).setCacheable(true);
	}

	@Override
	@Transactional
	public Session getSession()  {
		return ((Session) this.entityManager.getDelegate());
	}

	public void setEntityManager(EntityManager entityManager) {
		this.entityManager = entityManager;
	}
}

E a classe de serviço está assim:

@Service("equipamentoFacade")
public class EquipamentoFacade {

	private GenericDAOImpl<Equipamento> dao;

	@Autowired
	public EquipamentoFacade(GenericDAOImpl<Equipamento> dao)
	{
		this.dao = dao;
	}

	public void salvar(Equipamento equipamento)
	{
		this.dao.insert(equipamento);
	}
}

Alguém sabe e dizer oq estou fazendo de errado???

Obrigado!