Injeção de Dependência Spring Erro

Boa noite, estou fazendo o exercicio 13.5 Web da Caelum.
Faço todo o procedimento. Porém, dá erro já no console do Tomcat, segue erro:

Error creating bean with name ‘tarefasController’ defined in file [C:\Users\JEEF\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\fj21-tarefas\WEB-INF\classes\br\com\caelum\tarefas\controller\TarefasController.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.com.caelum.tarefas.dao.JdbcTarefaDao]: …

Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name ‘dataSource’ defined in ServletContext resource [/WEB-INF/spring-context.xml]; nested exception is java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1327)

Segue o XML :

< bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource">
	< property name="driverClassName" value="com.mysql.jdbc.Driver"/>
	< property name="url" value="jdbc:mysql://localhost/fj21"/>
	< property name="username" value="root"/>
	< property name="password" value="yusuke"/>
< /bean>

Segue o Dao:

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import br.com.caelum.tarefas.ConnectionFactory;
import br.com.caelum.tarefas.modelo.Tarefa;

@Repository
public class JdbcTarefaDao {
	private final Connection connection;

	@Autowired
	public JdbcTarefaDao(DataSource dataSource) {
		try{
		this.connection = dataSource.getConnection();
		}catch (SQLException e){
			throw new RuntimeException(e);
		}
	}

Segue o Controller:

@Controller
public class TarefasController {
	
	private final JdbcTarefaDao dao;
	
	@Autowired
	 public TarefasController(JdbcTarefaDao dao) {
		this.dao = dao;
	}

Eu vi um tópico com o mesmo problema aqui no GUJ, porém algumas mensagens não aparecem os codigos que o pessoal tentou e conseguiu resolver, ai fiquei meio perdido.

Poderiam me ajudar por favor?

Você esta usando JPA? Se sim você identificou o modelo como @Entity? Pelo que vi na mensagem de erro ele não esta criando a tabela na base de dados.

Oi Edjane, não, não estou usando JPA não.
Dei uma olhada nesse outro erro:
Cannot find class [org.apache.commons.dbcp.BasicDataSource] for bean with name 'dataSource’
Não esta achando a classe com o nome dataSource, mas tbm não consegui resolver.

Eu fiz esse curso na Caelum SP, mas já faz tanto tempo e trabalhando com outras coisas já não lembro muita coisa. Mas esse erro diz muito: Error creating bean with name ‘tarefasController’ defined in file [C:\Users\JEEF\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\fj21-tarefas\WEB-INF\classes\br\com\caelum\tarefas\controller\TarefasController.class] posta o código completo da classe TarefasController, pode ficar mais fácil de eu ou outra pessoa ajudar!

Só mais uma coisa você esta usando Maven? Se sim, verifica se não esta faltando alguma dependência!

Bom dia Edjane, obrigado por estar tentando me ajudar.
Segue o TarefasController :

package br.com.caelum.tarefas.controller;

import java.sql.SQLException;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;

import br.com.caelum.tarefas.dao.JdbcTarefaDao;
import br.com.caelum.tarefas.modelo.Tarefa;

@Controller
public class TarefasController {

private final JdbcTarefaDao dao;

@Autowired
 public TarefasController(JdbcTarefaDao dao) {
	this.dao = dao;
}


@RequestMapping("novaTarefa")
public String form() {
	return "tarefa/formulario";
}

@RequestMapping("adicionaTarefa")
public String adiciona(@Valid Tarefa tarefa, BindingResult result) throws SQLException {

	if (result.hasFieldErrors("descricao")) {
		return "tarefa/formulario";
	}

	dao.adiciona(tarefa);
	return "tarefa/adicionada";

}

@RequestMapping("listaTarefas")
	public String lista(Model model) throws SQLException{
	model.addAttribute("tarefas",dao.lista());
	return "tarefa/lista";
}

@RequestMapping("removeTarefa")
	public String remove(Tarefa tarefa) throws SQLException{
	dao.remove(tarefa);
	return "redirect:listaTarefas";
}

@RequestMapping("mostraTarefa")
	public String mostra(Long id, Model model) throws SQLException{
	model.addAttribute("tarefa", dao.buscaPorId(id));
	return "tarefa/mostra";
}

@RequestMapping("alteraTarefa")
	public String altera(Tarefa tarefa) throws SQLException{
	dao.altera(tarefa);
	return "redirect:listaTarefas";
}

@RequestMapping("finalizaTarefa")
	public String finaliza(Long id,Model model) throws SQLException{
	dao.finaliza(id);
	model.addAttribute("tarefa", dao.buscaPorId(id));
	return "tarefa/finalizada";
}

}

Não, não estou usando o Maven, ainda não cheguei a mexer nessa ferramenta ainda.
Estou mexendo com o Spring MVC na apostila ainda.