[RESOLVIDO]Problemas com Spring MVC 3.2 e Hibernate 3

Galera, boa tarde estou estudando Java Web e estou encontrando algumas dificuldades ao tentar realizar a injeção de dependência com o Spring.
estou tentando fazer um login e estou recebendo o seguinte erro.

GRAVE: Servlet.service() for servlet [Spring_MVC_Dispatcher_Servlet] in context with path [/SGE] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause java.lang.NullPointerException at br.com.sge.logica.UsuarioLogica.efetuarLogin(UsuarioLogica.java:23) at br.com.sge.controller.LoginController.efetuarLogin(LoginController.java:33) 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 org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:647) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:603) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:859) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:883) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:792) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 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:225) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 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:662)

segue abaixo as minhas classes e arquivos de configuração.

Web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>/loginForm</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>Spring_MVC_Dispatcher_Servlet</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                /WEB-INF/spring-context.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Spring_MVC_Dispatcher_Servlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

spring-context.xml

<?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:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
        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" xmlns:tx="http://www.springframework.org/schema/tx">
    
    <context:component-scan base-package="br.com.sge" />
    
    <mvc:annotation-driven />
    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    
    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="/WEB-INF/mensagens"/>
    </bean>
    
    <bean id="usuarioDAO" class="br.com.sge.dao.implementacao.UsuarioDAO">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    
    <mvc:default-servlet-handler/>
    
    <mvc:interceptors>
        <bean class="br.com.sge.interceptor.AutorizadorInterceptor"/>
    </mvc:interceptors>
    
    
    <bean id="dataBase" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>  
        <property name="url" value="jdbc:mysql://localhost/SGE?UseUnicode=true;characterEncoding=UTF-8"/>  
        <property name="username" value="root"/>  
        <property name="password" value="root"/>  
    </bean>
    
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataBase"/>
        <property name="configLocation">
            <value>classpath:hibernate.cfg.xml</value>
        </property>
        <property name="packagesToScan" value="br.com.sge.modelo"/>
    </bean>
    
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >  
        <property name="sessionFactory" ref="sessionFactory" />  
    </bean> 
    
    <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
 
</beans>

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/SGE?UseUnicode=true;characterEncoding=UTF-8</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">true</property>
        <property name="hibernate.current_session_context_class">thread</property>
        <mapping package="br.com.sge.modelo" ></mapping>
    </session-factory>
</hibernate-configuration>

Usuario.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sge.modelo;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import org.hibernate.annotations.OnDelete;
import org.hibernate.annotations.OnDeleteAction;


/**
 *
 * @author fabricio_maia
 */

@Entity
@Table(name="usuario")
public class Usuario implements Serializable{
    
    @Id
    @GeneratedValue
    @Column(name="id_usuario")
    private Long id_usuario;
    
    @Column(name="nome_usuario")
    private String nome_usuario;
    
    @Column(name="login_usuario")
    private String login_usuario;
    
    @Column(name="senha_usuario")
    private String senha_usuario;
    
    @Column(name="email_usuario")
    private String email_usuario;
    
    @JoinColumn(name = "fk_id_perfil", referencedColumnName = "id_perfil")
    @ManyToOne
    @OnDelete(action= OnDeleteAction.CASCADE)
    private Perfil perfil;

    /**
     * @return the id_usuario
     */
    public Long getId_usuario() {
        return id_usuario;
    }

    /**
     * @param id_usuario the id_usuario to set
     */
    public void setId_usuario(Long id_usuario) {
        this.id_usuario = id_usuario;
    }

    /**
     * @return the nome_usuario
     */
    public String getNome_usuario() {
        return nome_usuario;
    }

    /**
     * @param nome_usuario the nome_usuario to set
     */
    public void setNome_usuario(String nome_usuario) {
        this.nome_usuario = nome_usuario;
    }

    /**
     * @return the login_usuario
     */
    public String getLogin_usuario() {
        return login_usuario;
    }

    /**
     * @param login_usuario the login_usuario to set
     */
    public void setLogin_usuario(String login_usuario) {
        this.login_usuario = login_usuario;
    }

    /**
     * @return the senha_usuario
     */
    public String getSenha_usuario() {
        return senha_usuario;
    }

    /**
     * @param senha_usuario the senha_usuario to set
     */
    public void setSenha_usuario(String senha_usuario) {
        this.senha_usuario = senha_usuario;
    }

    /**
     * @return the email_usuario
     */
    public String getEmail_usuario() {
        return email_usuario;
    }

    /**
     * @param email_usuario the email_usuario to set
     */
    public void setEmail_usuario(String email_usuario) {
        this.email_usuario = email_usuario;
    }

    /**
     * @return the perfil
     */
    public Perfil getPerfil() {
        return perfil;
    }

    /**
     * @param perfil the perfil to set
     */
    public void setPerfil(Perfil perfil) {
        this.perfil = perfil;
    }

   
    
}

IUsuarioDAO.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sge.dao.interfaces;

import br.com.sge.modelo.Usuario;
import java.util.List;

/**
 *
 * @author fabricio_maia
 */
public interface IUsuarioDAO {

    /**
     * Salva usuario
     *
     * @param usuario
     */
    public void save(Usuario usuario);

    /**
     * altera usuario
     *
     * @param usuario
     */
    public void update(Usuario usuario);

    /**
     * Recupera todos os usuario do banco
     *
     * @return List<Usuario>
     */
    public List<Usuario> getAll();

    /**
     * Remove Usuario do Banco
     *
     * @param usuario
     */
    public void delete(Usuario usuario);

    /**
     * Procura Usuario do Banco com um Id especifico
     *
     * @param Long
     */
    public Usuario procuraId(Long id);

    /**
     * Procura Usuario do Banco com um Login e senha especificos
     *
     * @param String login
     * @param String senha
     * @return Usuario
     */
    public Usuario procuraLoginSenha(String login, String senha);
}

UsuarioDAO.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sge.dao.implementacao;

import br.com.sge.dao.interfaces.IUsuarioDAO;
import br.com.sge.modelo.Usuario;
import java.util.List;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author fabricio_maia
 */
@Repository
public class UsuarioDAO implements IUsuarioDAO {
    
    @Autowired
    private SessionFactory sessionFactory;

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    
    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    @Override
    public void save(Usuario usuario) {
        sessionFactory.getCurrentSession().save(usuario);
    }

    @Override
    public void update(Usuario usuario) {
        sessionFactory.getCurrentSession().update(usuario);
    }

    @Override
    public List<Usuario> getAll() {

        List<Usuario> list;
        list = sessionFactory.getCurrentSession().createCriteria(Usuario.class).list();
        return list;
    }

    @Override
    public void delete(Usuario usuario) {
        sessionFactory.getCurrentSession().delete(usuario);
    }

    @Override
    public Usuario procuraId(Long id) {
        Usuario usu;
        usu = (Usuario) sessionFactory.getCurrentSession().load(Usuario.class, id);
        return usu;
    }

    @Override
    @Transactional
    public Usuario procuraLoginSenha(String login, String senha) {
        Usuario user;
        user = (Usuario) sessionFactory.getCurrentSession().createCriteria(Usuario.class)
                .add(Restrictions.and(
                Restrictions.eq("login_usuario", login),
                Restrictions.eq("senha_usuario", senha))).uniqueResult();
        return user;
    }

}

LoginController.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sge.controller;

import br.com.sge.logica.UsuarioLogica;
import br.com.sge.modelo.Usuario;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 *
 * @author fabricio_maia
 */
@Controller
public class LoginController {

    @RequestMapping("loginForm")
    public String loginForm() {
        return "formulario-login";
    }

    @RequestMapping("efetuarLogin")
    public String efetuarLogin(Usuario usuario, HttpSession session) {

        if (usuario != null) {

            Usuario user;


            user = new UsuarioLogica().efetuarLogin(usuario);

            if (user != null) {
                session.setAttribute("usuarioLogado", user);
                return "menu";
            } else {
                return "redirect:loginForm";
            }

        } else {
            return "redirect:loginForm";
        }
    }

    @RequestMapping("logout")
    public String efetuarLogout(HttpSession session) {
        session.invalidate();
        return "redirect:loginForm";
    }
}

AutorizadorInterceptor.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sge.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

/**
 *
 * @author fabricio_maia
 */
public class AutorizadorInterceptor extends HandlerInterceptorAdapter{

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String uri = request.getRequestURI();
        
        if(uri.endsWith("loginForm") || uri.endsWith("efetuarLogin") || uri.endsWith("css")){
            return true;
        }
        
        if(request.getSession().getAttribute("usuarioLogado") != null){
            return true;
        }
        
        response.sendRedirect("loginForm");
        return false;
    }
    
    
}

UsuarioLogica.java

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.sge.logica;

import br.com.sge.dao.interfaces.IUsuarioDAO;
import br.com.sge.modelo.Usuario;
import javax.annotation.Resource;
//import org.springframework.beans.factory.annotation.Autowired;

/**
*

  • @author fabricio_maia
    */
    public class UsuarioLogica {

    @Resource(name=“usuarioDAO”)
    IUsuarioDAO usuarioDAO;

    public Usuario efetuarLogin(Usuario u) {
    Usuario user;
    user = usuarioDAO.procuraLoginSenha(u.getLogin_usuario(), u.getSenha_usuario());
    return user;
    }
    }
    [/code]

estou usando Apache Tomcat 7.0.27.0
Java EE 6 Web
em anexo tem uma imagem das libs que estou usando

como disse não entendo muito do assunto estou estudando alguém poderia me ajudar

desde já agradeço


O loco, pra que isso tudo de código mano? fica até dificil de olhar se teu erro não fosse fácil. O.o

A mensagem de erro fala que o erro está aqui:
at br.com.sge.logica.UsuarioLogica.efetuarLogin(UsuarioLogica.java:23)
user = usuarioDAO.procuraLoginSenha(u.getLogin_usuario(), u.getSenha_usuario());

Vocẽ viu quem está null aí?

pois é cara tava tentando depurar pelo netbeans mais não passa dessa linha

user = usuarioDAO.procuraLoginSenha(u.getLogin_usuario(), u.getSenha_usuario());

usuarioDAO é null

sei que ele não ta sendo inicializado pelo Spring, mas ainda consegui fazer isso acontecer.

foi malae a quantidade de codigo coloquei tudo, pensei que quanto mais informação mas fácil seria pra responder :oops:

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.sge.logica;

import br.com.sge.dao.interfaces.IUsuarioDAO;
import br.com.sge.modelo.Usuario;
import javax.annotation.Resource;
//import org.springframework.beans.factory.annotation.Autowired;

/**
*

  • @author fabricio_maia
    */
    public class UsuarioLogica {

    @Resource(name=“usuarioDAO”)
    IUsuarioDAO usuarioDAO;

    public Usuario efetuarLogin(Usuario u) {
    Usuario user;
    user = usuarioDAO.procuraLoginSenha(u.getLogin_usuario(), u.getSenha_usuario());
    return user;
    }
    }
    [/code]
    Seu problema esta na classe acima, porque você não transformou o UsuarioLogica em um bean gerenciado pelo Spring. Assim, ele não consegue injetar o DAO. Adicione a anotação @Service do Spring, acima do nome da classe.

E você não precisa usar:

&lt;bean id="usuarioDAO" class="br.com.sge.dao.implementacao.UsuarioDAO"&gt; &lt;property name="sessionFactory" ref="sessionFactory"/&gt; &lt;/bean&gt;
Você já ta fazendo isso na classe UsuarioDAO através das anotações @Repository e @Autowired.

Troque a anotação @Resource(name=“usuarioDAO”) de UsuarioLogica por @Autowired, mantenha um padrão entre as anotações dentro do projeto.

cara fiz o que você falou mas o erro continua do mesmo jeito

GRAVE: Servlet.service() for servlet [Spring_MVC_Dispatcher_Servlet] in context with path [/SGE] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause java.lang.NullPointerException at br.com.sge.logica.UsuarioLogica.efetuarLogin(UsuarioLogica.java:26) at br.com.sge.controller.LoginController.efetuarLogin(LoginController.java:32) 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 org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:647) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:603) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:859) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:883) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:792) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 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:225) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 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:662)

Na classe LoginController faça assim:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sge.controller;

import br.com.sge.logica.UsuarioLogica;
import br.com.sge.modelo.Usuario;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 *
 * @author fabricio_maia
 */
@Controller
public class LoginController {

    private UsuarioLogica usuarioLogica; //adicione

    @Autorwired // adicione tudo isso
    public LoginController(UsuarioLogica usuarioLogica) {
        this.usuarioLogica = usuarioLogica;
    }

    @RequestMapping("loginForm")
    public String loginForm() {
        return "formulario-login";
    }

    @RequestMapping("efetuarLogin")
    public String efetuarLogin(Usuario usuario, HttpSession session) {

        if (usuario != null) {

            Usuario user;


            user = usuarioLogica.efetuarLogin(usuario); // altere aqui

            if (user != null) {
                session.setAttribute("usuarioLogado", user);
                return "menu";
            } else {
                return "redirect:loginForm";
            }

        } else {
            return "redirect:loginForm";
        }
    }

    @RequestMapping("logout")
    public String efetuarLogout(HttpSession session) {
        session.invalidate();
        return "redirect:loginForm";
    }
}

Obrigado Romarcio deu certo.

Cara estou estudando ainda e sei que essa minha duvida foi meio besta mas, acho que outras irão aparecer a medida que eu for estudando kkkkkkkkkkkkkkkkk
ainda não achei uma boa apostila ou tutorial em português li a Fj-21 da Caelum e deu pra desenrolar alguma coisa, você tem alguma sugestão de um bom
livro ou apostila em português ?

[quote=Fabricio maia]Obrigado Romarcio deu certo.

Cara estou estudando ainda e sei que essa minha duvida foi meio besta mas, acho que outras irão aparecer a medida que eu for estudando kkkkkkkkkkkkkkkkk
ainda não achei uma boa apostila ou tutorial em português li a Fj-21 da Caelum e deu pra desenrolar alguma coisa, você tem alguma sugestão de um bom
livro ou apostila em português ?

[/quote]

Em português acabou de ser lançado um livro de um companheiro nosso aqui do blog, o Henrique Lobo Weissmann.


Dá uma conferida.

mais uma vez obrigado