Iniciando com Spring - Erro ao realizar a injeção

Ola pessoal.

Depois de resistir ao máximo ao spring. Decidi colocar a mão na massa, principalmente para me beneficiar da intergração com o hibernate e opensessioninview.

Bom meu sistema é composto pelo famoso

package br.com.webscola.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {

    private static final SessionFactory sessionFactory;
    
    static {
        try {
            AnnotationConfiguration configuration = new AnnotationConfiguration().configure("br/com/webscola/util/hibernate.cfg.xml");          
            sessionFactory = configuration.buildSessionFactory();
        } catch (Throwable ex) {
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

Estou tentando fazer o mínimo de alterações possíveis para evitar grandes impactos no sistema. Estou tentando fazer o seguinte como CRUD.

Nome: Dionatan Hovoruski
Data: 16/12/2011
Descrição:
 */
package br.com.webscola.service.impl;

import br.com.webscola.controller.LoginController;
import br.com.webscola.model.bean.Curso;
import br.com.webscola.model.dao.HibernateDAO;
import br.com.webscola.model.dao.InterfaceDAO;
import br.com.webscola.service.CursoService;
import br.com.webscola.util.FacesContextUtil;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.hibernate.HibernateException;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service("cursoService")
public class CursoServiceImpl implements CursoService {

    @Autowired
    SessionFactory sf;
    Session session;

    public List<Curso> listaTudo() {
        try {
            session = sf.openSession();
            session.beginTransaction();
            String sql;
            sql = "select * from curso "
                    + " where id_empresa = :empresa "
                    + " order by descricao";

            SQLQuery q = session.createSQLQuery(sql).addEntity(Curso.class);
            LoginController loginController = (LoginController) FacesContextUtil.getSessionAttribute("loginController");

            q.setParameter("empresa", loginController.getUsuario().getEmpresa().getId());

            if (!q.list().isEmpty()) {
                return q.list();
            } else {
                return new ArrayList<Curso>();
            }

        } catch (HibernateException e) {
            session.getTransaction().rollback();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! Não foi possível listar", null));
            e.getMessage();
        } finally {
            if (session.isOpen()) {
                session.close();
            }
        }
        return new ArrayList<Curso>();
    }

    public void adiciona(Curso curso) {
        try {
            session = sf.openSession();
            session.beginTransaction();
            LoginController loginController = (LoginController) FacesContextUtil.getSessionAttribute("loginController");
            curso.setEmpresa(loginController.getUsuario().getEmpresa());
            session.save(curso);
            session.getTransaction().commit();

            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Registro inserido com sucesso!", null));
        } catch (HibernateException e) {
            session.getTransaction().rollback();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! Não foi possível salvar", null));
            e.getMessage();
        } finally {
            if (session.isOpen()) {
                session.close();
            }
        }
    }

    public void remove(Curso curso) {
        try {
            if (curso != null) {
                session = sf.openSession();
                session.beginTransaction();
                session.delete(curso);
                session.getTransaction().commit();
            }
        } catch (HibernateException e) {
            session.getTransaction().rollback();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! Não foi possível remover", null));
            e.getMessage();
        } finally {
            if (session.isOpen()) {
                session.close();
            }
        }
    }

    public void atualiza(Curso curso) {
        try {
            session = sf.openSession();
            session.beginTransaction();
            session.update(curso);
            session.getTransaction().commit();

            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Alteração realizada com sucesso!", null));
        } catch (HibernateException e) {
            session.getTransaction().rollback();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! Não foi possível alterar", null));
            e.getMessage();
        } finally {
            if (session.isOpen()) {
                session.close();
            }
        }
    }

    public Curso carrega(Integer codigo) {
        try {
            session = sf.openSession();
            session.beginTransaction();
            String sql;
            sql = "select * from Curso "
                    + " where id_curso = :codigo ";

            SQLQuery q = session.createSQLQuery(sql).addEntity(Curso.class);
            q.setParameter("codigo", codigo);

            if (!q.list().isEmpty()) {
                return (Curso) q.uniqueResult();
            } else {
                return new Curso();
            }

        } catch (HibernateException e) {
            session.getTransaction().rollback();
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! Não foi possível buscar", null));
            e.getMessage();
        } finally {
            if (session.isOpen()) {
                session.close();
            }
        }
        return null;
    }

    public List<Curso> busca(String nome) {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

Porém ao tentar chamar o método listatudo() estou tendo o seguinte erro:

28/12/2011 21:54:49 com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/curso/index.xhtml]
com.sun.faces.mgbean.ManagedBeanCreationException: Um erro ocorreu ao realizar a injeção de recurso no bean gerenciado cursoMB
	at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:229)
	at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:105)
	at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
	at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
	at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
	at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71)
	at org.apache.el.parser.AstValue.getValue(AstValue.java:147)
	at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:413)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1750)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:58)
	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:46)
	at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at br.com.webscola.util.EncodingFilter.doFilter(EncodingFilter.java:24)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:619)
Caused by: com.sun.faces.spi.InjectionProviderException
	at com.sun.faces.vendor.WebContainerInjectionProvider.invokeAnnotatedMethod(WebContainerInjectionProvider.java:119)
	at com.sun.faces.vendor.WebContainerInjectionProvider.invokePostConstruct(WebContainerInjectionProvider.java:99)
	at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:223)
	... 52 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.sun.faces.vendor.WebContainerInjectionProvider.invokeAnnotatedMethod(WebContainerInjectionProvider.java:117)
	... 54 more
Caused by: java.lang.NullPointerException
	at br.com.webscola.service.impl.CursoServiceImpl.listaTudo(CursoServiceImpl.java:58)
	at br.com.webscola.controller.CursoMB.carregar(CursoMB.java:60)
	... 59 more