SpringFramwor - Erro ao subir o projeto

Bom dia/tarde/noite

Estou usando injeção de dependência em um projeto, utilizando SpringFrameWork. Quando eu subo meu projeto, eu tomo o seguinte erro:

GRAVE: Context initialization failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘manterFilmesController’ defined in file [C:\Users\welli\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\pipoca_spring_aula02\WEB-INF\classes\br\usjt\arqsw18\pipoca\controller\ManterFilmesController.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.usjt.arqsw18.pipoca.model.service.FilmeService]: : Error creating bean with name ‘filmeService’ defined in file [C:\Users\welli\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\pipoca_spring_aula02\WEB-INF\classes\br\usjt\arqsw18\pipoca\model\service\FilmeService.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.usjt.arqsw18.pipoca.model.dao.FilmeDAO]: : Error creating bean with name ‘filmeDAO’ defined in file [C:\Users\welli\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\pipoca_spring_aula02\WEB-INF\classes\br\usjt\arqsw18\pipoca\model\dao\FilmeDAO.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [br.usjt.arqsw18.pipoca.model.dao.FilmeDAO]: Constructor threw exception; nested exception is java.io.IOException: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server.); nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘filmeDAO’ defined in file [C:\Users\welli\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\pipoca_spring_aula02\WEB-INF\classes\br\usjt\arqsw18\pipoca\model\dao\FilmeDAO.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [br.usjt.arqsw18.pipoca.model.dao.FilmeDAO]: Constructor threw exception; nested exception is java.io.IOException: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server.); nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘filmeService’ defined in file [C:\Users\welli\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\pipoca_spring_aula02\WEB-INF\classes\br\usjt\arqsw18\pipoca\model\service\FilmeService.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.usjt.arqsw18.pipoca.model.dao.FilmeDAO]: : Error creating bean with name ‘filmeDAO’ defined in file [C:\Users\welli\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\pipoca_spring_aula02\WEB-INF\classes\br\usjt\arqsw18\pipoca\model\dao\FilmeDAO.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [br.usjt.arqsw18.pipoca.model.dao.FilmeDAO]: Constructor threw exception; nested exception is java.io.IOException: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server.); nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘filmeDAO’ defined in file [C:\Users\welli\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\pipoca_spring_aula02\WEB-INF\classes\br\usjt\arqsw18\pipoca\model\dao\FilmeDAO.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [br.usjt.arqsw18.pipoca.model.dao.FilmeDAO]: Constructor threw exception; nested exception is java.io.IOException: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Could not create connection to database server.)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:185)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1143)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
at javax.servlet.GenericServlet.init(GenericServlet.java:158)
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1238)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1151)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1038)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5027)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5337)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1407)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1397)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

Alguém sabe o que poderia ser ?

O erro está citando um parâmetro de construtor que não foi satisfeito, para a classe

Minhas classes são as seguintes:

package br.usjt.arqsw18.pipoca.controller;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.http.HttpSession;

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

import br.usjt.arqsw18.pipoca.model.entity.Filme;
import br.usjt.arqsw18.pipoca.model.entity.Genero;
import br.usjt.arqsw18.pipoca.model.service.FilmeService;
import br.usjt.arqsw18.pipoca.model.service.GeneroService;

@Controller
public class ManterFilmesController {
@Autowired
private FilmeService fService;
@Autowired
private GeneroService gService;

@Autowired
public ManterFilmesController(FilmeService fService, GeneroService gService) {
	this.fService = fService;
	//this.gService = gService;
}
@RequestMapping("index")
public String iniciar() {
	return "index";
}

@RequestMapping("/novo_filme")
public String novo(Model model) {
	try {
		gService = new GeneroService();
		ArrayList<Genero> generos = gService.listarGeneros();
		model.addAttribute("generos", generos);
		return "CriarFilme";
	} catch (IOException e) {
		e.printStackTrace();
		model.addAttribute("erro", e);
		return "Erro";
	}
}

@RequestMapping("/criar_filme")
public String criarFilme(Filme filme, Model model) {
	try {
		
		Genero genero = new Genero();
		genero.setId(filme.getGenero().getId());
		genero.setNome(gService.buscarGenero(genero.getId()).getNome());
		filme.setGenero(genero);

		filme = fService.inserirFilme(filme);

		model.addAttribute("filme", filme);

		return "VisualizarFilme";
	} catch (IOException e) {
		e.printStackTrace();
		model.addAttribute("erro", e);
		return "Erro";
	}
}

@RequestMapping("/reiniciar_lista")
public String reiniciarLista(HttpSession session) {
	session.setAttribute("lista", null);
	return "ListarFilmes";
}

@RequestMapping("/listar_filmes")
public String listarFilmes(HttpSession session, Model model, String chave) {
	try {
		//HttpSession session = ((HttpServletRequest) model).getSession();

		ArrayList<Filme> lista;
		if (chave != null && chave.length() > 0) {
			lista = fService.listarFilmes(chave);
		} else {
			lista = fService.listarFilmes();
		}
		session.setAttribute("lista", lista);
		return "ListarFilmes";
	} catch (IOException e) {
		e.printStackTrace();
		model.addAttribute("erro", e);
		return "Erro";
	}
}

}

package br.usjt.arqsw18.pipoca.model.dao;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.sql.DataSource;

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

import br.usjt.arqsw18.pipoca.model.entity.Filme;
import br.usjt.arqsw18.pipoca.model.entity.Genero;

@Repository
public class FilmeDAO {
@Autowired
private Connection conn;

@Autowired
public FilmeDAO(DataSource dataSource) throws IOException {
	try {
		this.conn = dataSource.getConnection();
	} catch (SQLException e) {
		throw new IOException(e);
	}
}


public int inserirFilme(Filme filme) throws IOException {
	int id = -1;
	String sql = "insert into Filme (titulo, descricao, diretor, posterpath, "
			+ "popularidade, data_lancamento, id_genero) values (?,?,?,?,?,?,?)";
	
	try(PreparedStatement pst = conn.prepareStatement(sql);){
		
		pst.setString(1, filme.getTitulo());
		pst.setString(2, filme.getDescricao());
		pst.setString(3, filme.getDiretor());
		pst.setString(4, filme.getPosterPath());
		pst.setDouble(5, filme.getPopularidade());
		if(filme.getDataLancamento() != null) {
			pst.setDate(6, new java.sql.Date(filme.getDataLancamento().getTime()));
		} else {
			pst.setDate(6,  null);
		}
		pst.setInt(7, filme.getGenero().getId());			
		pst.execute();
		
		//obter o id criado
		String query = "select LAST_INSERT_ID()";
		try(PreparedStatement pst1 = conn.prepareStatement(query);
			ResultSet rs = pst1.executeQuery();){

			if (rs.next()) {
				id = rs.getInt(1);
			}
		}
	} catch (SQLException e) {
		e.printStackTrace();
		throw new IOException(e);
	}
	return id;
}

public Filme buscarFilme(int id) throws IOException{
	// TODO Auto-generated method stub
	return null;
}

public ArrayList<Filme> listarFilmes(String chave) throws IOException {
	ArrayList<Filme> lista = new ArrayList<>();
	String sql = "select f.id, f.titulo, f.descricao, f.diretor, f.posterpath, "
			+ "f. popularidade, f.data_lancamento, f.id_genero, g.nome "
			+ "from filme f, genero g "
			+ "where f.id_genero = g.id and upper(f.titulo) like ?";
	try(PreparedStatement pst = conn.prepareStatement(sql);){
		
		pst.setString(1, "%" + chave.toUpperCase() + "%");
	
		try(ResultSet rs = pst.executeQuery();){
		
			Filme filme;
			Genero genero;
			while(rs.next()) {
				filme = new Filme();
				filme.setId(rs.getInt("f.id"));
				filme.setTitulo(rs.getString("f.titulo"));
				filme.setDescricao(rs.getString("f.descricao"));
				filme.setDiretor(rs.getString("f.diretor"));
				filme.setPosterPath(rs.getString("f.posterpath"));
				filme.setDataLancamento(rs.getDate("f.data_lancamento"));
				genero = new Genero();
				genero.setId(rs.getInt("f.id_genero"));
				genero.setNome(rs.getString("g.nome"));
				filme.setGenero(genero);
				lista.add(filme);
			}
		}
	} catch (SQLException e) {
		e.printStackTrace();
		throw new IOException(e);
	}
			
	return lista;
}

public ArrayList<Filme> listarFilmes() throws IOException {
	ArrayList<Filme> lista = new ArrayList<>();
	String sql = "select f.id, f.titulo, f.descricao, f.diretor, f.posterpath, "
			+ "f. popularidade, f.data_lancamento, f.id_genero, g.nome "
			+ "from filme f, genero g "
			+ "where f.id_genero = g.id";
	try(PreparedStatement pst = conn.prepareStatement(sql);
		ResultSet rs = pst.executeQuery();){
		
		Filme filme;
		Genero genero;
		while(rs.next()) {
			filme = new Filme();
			filme.setId(rs.getInt("f.id"));
			filme.setTitulo(rs.getString("f.titulo"));
			filme.setDescricao(rs.getString("f.descricao"));
			filme.setDiretor(rs.getString("f.diretor"));
			filme.setPosterPath(rs.getString("f.posterpath"));
			filme.setDataLancamento(rs.getDate("f.data_lancamento"));
			genero = new Genero();
			genero.setId(rs.getInt("f.id_genero"));
			genero.setNome(rs.getString("g.nome"));
			filme.setGenero(genero);
			lista.add(filme);
		}
	} catch (SQLException e) {
		e.printStackTrace();
		throw new IOException(e);
	}				
	return lista;
}

}


package br.usjt.arqsw18.pipoca.model.entity;

import java.util.Date;

public class Filme {
private int id;
private String titulo;
private String descricao;
private double popularidade;
private Date dataLancamento;
private String posterPath;
private String diretor;
private Genero genero;

public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public String getTitulo() {
	return titulo;
}
public void setTitulo(String titulo) {
	this.titulo = titulo;
}
public String getDescricao() {
	return descricao;
}
public void setDescricao(String descricao) {
	this.descricao = descricao;
}
public double getPopularidade() {
	return popularidade;
}
public void setPopularidade(double popularidade) {
	this.popularidade = popularidade;
}
public Date getDataLancamento() {
	return dataLancamento;
}
public void setDataLancamento(Date dataLancamento) {
	this.dataLancamento = dataLancamento;
}
public String getPosterPath() {
	return posterPath;
}
public void setPosterPath(String posterPath) {
	this.posterPath = posterPath;
}
public String getDiretor() {
	return diretor;
}
public void setDiretor(String diretor) {
	this.diretor = diretor;
}
public Genero getGenero() {
	return genero;
}
public void setGenero(Genero genero) {
	this.genero = genero;
}
@Override
public String toString() {
	return "Filme [id=" + id + ", titulo=" + titulo + ", descricao=" + descricao + ", popularidade=" + popularidade
			+ ", dataLancamento=" + dataLancamento + ", posterPath=" + posterPath + ", diretor=" + diretor
			+ ", genero=" + genero + "]";
}

}


package br.usjt.arqsw18.pipoca.model.service;

import java.io.IOException;
import java.util.ArrayList;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Service;

import br.usjt.arqsw18.pipoca.model.dao.FilmeDAO;
import br.usjt.arqsw18.pipoca.model.entity.Filme;

@Service
@ComponentScan(basePackages = {“br.usjt.arqsw18.pipoca”})
public class FilmeService {
private FilmeDAO dao;

@Autowired
public FilmeService(FilmeDAO fdao) {
	dao = fdao;
}



public Filme buscarFilme(int id) throws IOException{
	return dao.buscarFilme(id);
}

public Filme inserirFilme(Filme filme) throws IOException {
	int id = dao.inserirFilme(filme);
	filme.setId(id);
	return filme;
}

public ArrayList<Filme> listarFilmes(String chave) throws IOException{
	return dao.listarFilmes(chave);
}

public ArrayList<Filme> listarFilmes() throws IOException{
	return dao.listarFilmes();
}

}


Meu arquivo spring-context.xml:

<?xml version="1.0" encoding="UTF-8"?>


<context:component-scan base-package=“br.usjt.arqsw18.pipoca”/>
<mvc:annotation-driven />
<mvc:default-servlet-handler />