InvalidPropertyException no spring [Resolvido]

Estou recebendo este erro:

Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
	at sca.app.ProfessoresPorTitulacaoReport.getBeanCollection(ProfessoresPorTitulacaoReport.java:59)
	at sca.app.ProfessoresPorTitulacaoReport.exibir(ProfessoresPorTitulacaoReport.java:41)
	at sca.ui.SCAPrincipal$3$1.run(SCAPrincipal.java:122)
	at java.awt.event.InvocationEvent.dispatch(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'semestresCursadosRepositorio' defined in file [C:\workspace\SCA - TCC\resources\ctx\sca-springConfig.xml]: Initialization of bean failed; nested exception is org.springframework.beans.InvalidPropertyException: Invalid property 'semestresCursadosDAO' of bean class [sca.domain.repositorio.SemestresCursadosRepositorio]: No property 'semestresCursadosDAO' found
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:221)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381)
	at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:140)
	at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:84)
	at sca.domain.repositorio.RepositorioFabrica.<clinit>(RepositorioFabrica.java:11)
	... 11 more
Caused by: org.springframework.beans.InvalidPropertyException: Invalid property 'semestresCursadosDAO' of bean class [sca.domain.repositorio.SemestresCursadosRepositorio]: No property 'semestresCursadosDAO' found
	at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:382)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1288)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1249)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
	... 25 more

O .xml de configuração do spring é este:

<?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:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx.xsd">

	<!--  DAOS -->
	<bean id="professorDAO" class="sca.infra.dao.ProfessorDAOJpa" />
	<bean id="disciplinaDAO" class="sca.infra.dao.DisciplinaDAOJpa" />
	<bean id="alunoDAO" class="sca.infra.dao.AlunoDAOJpa" />
	<bean id="gradeDisponibilidadeDAO" class="sca.infra.dao.GradeDisponibilidadeDAOJpa" />
	<bean id="titulacaoDAO" class="sca.infra.dao.TitulacaoDAOJpa" />
	<bean id="turmaDAO" class="sca.infra.dao.TurmaDAOJpa" />
	<bean id="inscricaoDAO" class="sca.infra.dao.InscricaoDAOJpa" />
	<bean id="itemDisponibilidadeDAO" class="sca.infra.dao.ItemDisponibilidadeDAOJpa" />
	<bean id="semestresCursadosDAO" class="sca.infra.dao.SemestresCursadosDAOJpa"/>
	<bean id="semestreLetivoDAO" class="sca.infra.dao.SemestreLetivoDAOJpa"/>
	
	<!--  REPOSITORIES -->
	<bean id="gradeDisponibilidadeRepositorio" class="sca.domain.repositorio.GradeDisponibilidadeRepositorio">
		<property name="gradeDisponibilidadeDAO">
			<ref local="gradeDisponibilidadeDAO" />
		</property>
	</bean>

	<bean id="titulacaoRepositorio" class="sca.domain.repositorio.TitulacaoRepositorio">
		<property name="titulacaoDAO">
			<ref local="titulacaoDAO" />
		</property>
	</bean>

	<bean id="professorRepositorio" class="sca.domain.repositorio.ProfessorRepositorio">
		<property name="professorDAO">
			<ref local="professorDAO" />
		</property>
	</bean>

	<bean id="disciplinaRepositorio" class="sca.domain.repositorio.DisciplinaRepositorio">
		<property name="disciplinaDAO">
			<ref local="disciplinaDAO" />
		</property>
	</bean>

	<bean id="alunoRepositorio" class="sca.domain.repositorio.AlunoRepositorio">
		<property name="alunoDAO">
			<ref local="alunoDAO" />
		</property>
	</bean>
	
	<bean id="turmaRepositorio" class="sca.domain.repositorio.TurmaRepositorio">
		<property name="turmaDAO">
			<ref local="turmaDAO" />
		</property>
	</bean>
	
	<bean id="inscricaoRepositorio" class="sca.domain.repositorio.InscricaoRepositorio">
		<property name="inscricaoDAO">
			<ref local="inscricaoDAO"/>
		</property>
	</bean>
	
	<bean id="itemDisponibilidadeRepositorio" class="sca.domain.repositorio.ItemDisponibilidadeRepositorio">
		<property name="itemDisponibilidadeDAO">
			<ref local="itemDisponibilidadeDAO"/>
		</property>
	</bean>
	
	<bean id="semestresCursadosRepositorio" class="sca.domain.repositorio.SemestresCursadosRepositorio">
		<property name="semestresCursadosDAO">
			<ref local="semestresCursadosDAO"/>
		</property>
	</bean>
	
	<bean id="semestreLetivoRepositorio" class="sca.domain.repositorio.SemestreLetivoRepositorio">
		<property name="semestreLetivoDAO">
			<ref local="semestreLetivoDAO"/>
		</property>
	</bean>

	<!--  DEMAIS BEANS -->
	<bean id="estrategiaCalculoGrau" class="sca.domain.EstrategiaCalculoGrau2009" />

	<bean id="inscricao" class="sca.domain.Inscricao">
		<property name="estrategiaCalculoGrau">
			<ref local="estrategiaCalculoGrau" />
		</property>
	</bean>

</beans>

Estou há horas tentando resolver isso e até agora nada.

coloca a sua classe sca.domain.repositorio.SemestresCursadosRepositorio e sca.infra.dao.SemestresCursadosDAOJpa

Tá lá:

package sca.domain.repositorio;

import java.util.ArrayList;
import sca.domain.Aluno;
import sca.domain.SemestreLetivo;
import sca.infra.dao.DAOException;
import sca.infra.dao.SemestresCursadosDAO;

public class SemestresCursadosRepositorio {

	private SemestresCursadosDAO dao;
	
	public ArrayList<SemestreLetivo> obterSemestresCursados(Aluno aluno)
	throws RepositorioException{
		try {
			return dao.obterSemestresCursados(aluno);
		} catch (DAOException e) {
			throw new RepositorioException("Erro na obtenção dos semestres cursados",e);
		}
	}
}
package sca.infra.dao;

import java.util.ArrayList;

import javax.persistence.Query;
import javax.persistence.EntityManager;

import sca.domain.Aluno;
import sca.domain.SemestreLetivo;

public class SemestresCursadosDAOJpa implements SemestresCursadosDAO{
	private GenericDAOJPA<SemestreLetivo> genericDAO;
	
	@SuppressWarnings("unchecked")
	@Override
	public ArrayList<SemestreLetivo> obterSemestresCursados(Aluno aluno) 
	throws DAOException{
		 EntityManager em = genericDAO.getEntityManager();
		 Query consulta = em.createNamedQuery("SemestresCursados.obterSemestresPorAluno");
		 
		 consulta.setParameter("AlunoParam", aluno);
		 ArrayList<SemestreLetivo> semestresCursados = 
			 (ArrayList<SemestreLetivo>) consulta.getResultList();
		 
		 return semestresCursados;
		 
	}
}

Ah, também tem a fábrica:

package sca.domain.repositorio;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

public class RepositorioFabrica {

	private static String rootContextDirectoryClassPath = "resources/ctx";
	private static String startupContextPath = rootContextDirectoryClassPath
			+ "/sca-springConfig.xml";
	private static ApplicationContext ctx = new FileSystemXmlApplicationContext(
			startupContextPath);

	public static ProfessorRepositorio getProfessorRepositorio() {
		return (ProfessorRepositorio) ctx.getBean("professorRepositorio");
	}

	public static DisciplinaRepositorio getDisciplinaRepositorio() {
		return (DisciplinaRepositorio) ctx.getBean("disciplinaRepositorio");
	}

	public static GradeDisponibilidadeRepositorio getGradeDisponibilidadeRepositorio() {
		return (GradeDisponibilidadeRepositorio) ctx
				.getBean("gradeDisponibilidadeRepositorio");
	}

	public static TitulacaoRepositorio getTitulacaoRepositorio() {
		return (TitulacaoRepositorio) ctx
				.getBean("titulacaoRepositorio");
	}

	public static AlunoRepositorio getAlunoRepositorio() {
		return (AlunoRepositorio) ctx.getBean("alunoRepositorio");
	}

	public static TurmaRepositorio getTurmaRepositorio() {
		return (TurmaRepositorio) ctx.getBean("turmaRepositorio");
	}

	public static InscricaoRepositorio getInscricaoRepositorio() {
		return (InscricaoRepositorio) ctx.getBean("inscricaoRepositorio");
	}

	public static ItemDisponibilidadeRepositorio getItemDisponibilidadeRepositorio() {
		return (ItemDisponibilidadeRepositorio) ctx
				.getBean("itemDisponibilidadeRepositorio");
	}
	
	public static SemestresCursadosRepositorio getSemestresCursadosRepositorio(){
		return (SemestresCursadosRepositorio) ctx
			.getBean("semestresCursadosRepositorio");
	}
	
	public static SemetreLetivoRepositorio getSemetreLetivoRepositorio(){
		return (SemetreLetivoRepositorio) ctx
			.getBean("semetreLetivoRepositorio");
	}
	
}

A sua classe SemestresCursadosRepositorio não tem a propriedade com nome semestresCursadosDAO

public class SemestresCursadosRepositorio {  
  
    //private SemestresCursadosDAO dao; 
    private SemestresCursadosDAO semestresCursadosDAO;

    //faz o setter também

É como eu desconfiava e como o rogelgarcia disse, na classe SemestresCursadosRepositorio tem a propriedade dao do tipo SemestresCursadosDAO. Você disse pro spring q era semestresCursadosDAO

Era isso mesmo, muito obrigado a ambos.