edson.goncalez
Equipe
Membro desde: 15/04/2009 10:45:59
Mensagens: 5
Offline
|
Olá pessoal, por algum motivo usando o neo 3.4.0 na aplicação de exemplo dentro da classe AutorizacaoDAO o hibernateTemplate não estava sendo injetado automáticamente. Ao anotar com @Bean, por debug consegui detectar que a injeção está ocorrendo sem problemas, porém logo depois de injetar, em algum método que não parei pra ver.... está dando uma mensagem estranha do spring:
Code:
12:40:07,162 INFO [DefaultListableBeanFactory] Pre-instantiating singletons in factory [org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [autorizacaoDAO,arquivoService,autorizacaoService,loginController,logoutController,municipioCrud,pessoaCrud,ufCrud,municipioService,pessoaService,ufService,arquivoDAO,municipioDAO,pessoaDAO,ufDAO]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [dataSource,config,sqlErrorCodesTranslator,neoImageResolver,neoFormater,authorizationDAO,jdbcTemplate,sessionFactory,hibernateTemplate,hibernateTransactionManager,transactionTemplate,multipartResolver]; root of BeanFactory hierarchy]
12:40:53,499 INFO [DefaultListableBeanFactory] Destroying singletons in factory {org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [autorizacaoDAO,arquivoService,autorizacaoService,loginController,logoutController,municipioCrud,pessoaCrud,ufCrud,municipioService,pessoaService,ufService,arquivoDAO,municipioDAO,pessoaDAO,ufDAO]; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [dataSource,config,sqlErrorCodesTranslator,neoImageResolver,neoFormater,authorizationDAO,jdbcTemplate,sessionFactory,hibernateTemplate,hibernateTransactionManager,transactionTemplate,multipartResolver]; root of BeanFactory hierarchy}
12:40:53,500 ERROR [ContextLoader] Context initialization failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'autorizacaoService' defined in null: Unsatisfied dependency expressed through bean property 'autorizacaoDAO': There are 2 beans of type [class dao.AutorizacaoDAO] for autowire by type. There should have been 1 to be able to autowire property 'autorizacaoDAO' of bean 'autorizacaoService'.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:897)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:817)
Alguém sabe o que poderia ser ?
Ahh, fiz uma pequena mudança no controller de login, eu coloquei a parte de código que fazia acesso ao DAO dentro de uma classe de serviço nova que criei específicamente para tratar de autorização, dessa forma ficamos com o MVC mais completo.
AutorizacaoDAO:
Code:
@Bean
public class AutorizacaoDAO implements AuthorizationDAO{
public HibernateTemplate hibernateTemplate;
public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
this.hibernateTemplate = hibernateTemplate;
}
AutorizacaoService:
Code:
@ServiceBean
public class AutorizacaoService extends GenericService<AutorizacaoDAO> {
public AutorizacaoDAO autorizacaoDAO;
public void setAutorizacaoDAO(AutorizacaoDAO autorizacaoDAO) {
this.autorizacaoDAO = autorizacaoDAO;
}
public User usuarioValido(Usuario usuario) {
if (usuario != null && usuario.getLogin() != null
&& !usuario.getLogin().isEmpty()) {
User userByLogin = autorizacaoDAO.findUserByLogin(usuario
.getLogin());
if (userByLogin != null
&& userByLogin.getPassword().equals(usuario.getPassword())) {
return userByLogin;
}
}
return null;
}
}
LoginController:
Code:
@Controller(path = "/modulo/login")
public class LoginController extends MultiActionController {
private static final String AFTER_LOGIN_GO_TO = "/secured/crud/pessoa";
public AutorizacaoService autorizacaoService;
public void setAutorizacaoService(AutorizacaoService autorizacaoService) {
this.autorizacaoService = autorizacaoService;
}
@DefaultAction
public ModelAndView doPage(WebRequestContext request, Usuario usuario) {
return new ModelAndView("login", "usuario", usuario);
}
public ModelAndView doLogin(WebRequestContext request, Usuario usuario) {
User userByLogin = autorizacaoService.usuarioValido(usuario);
if (userByLogin != null) {
request.setUserAttribute("USER", userByLogin);
request.setUserAttribute(MenuTag.MENU_CACHE_MAP, null);
return new ModelAndView("redirect:" + AFTER_LOGIN_GO_TO);
} else {
request.addMessage("Login e/ou senha inválidos", MessageType.ERROR);
}
usuario.setSenha(null);
return doPage(request, usuario);
}
}
Att.
Edson.
|