<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "Erro ao anotar @Bean"]]></title>
		<link>http://www.neoframework.org/forum/posts/list/6.page</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "Erro ao anotar @Bean"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Erro ao anotar @Bean</title>
				<description><![CDATA[ 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:

<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
12:40:07,162 INFO  &#91;DefaultListableBeanFactory&#93; Pre-instantiating singletons in factory &#91;org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans &#91;autorizacaoDAO,arquivoService,autorizacaoService,loginController,logoutController,municipioCrud,pessoaCrud,ufCrud,municipioService,pessoaService,ufService,arquivoDAO,municipioDAO,pessoaDAO,ufDAO&#93;; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans &#91;dataSource,config,sqlErrorCodesTranslator,neoImageResolver,neoFormater,authorizationDAO,jdbcTemplate,sessionFactory,hibernateTemplate,hibernateTransactionManager,transactionTemplate,multipartResolver&#93;; root of BeanFactory hierarchy&#93;
12:40:53,499 INFO  &#91;DefaultListableBeanFactory&#93; Destroying singletons in factory {org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans &#91;autorizacaoDAO,arquivoService,autorizacaoService,loginController,logoutController,municipioCrud,pessoaCrud,ufCrud,municipioService,pessoaService,ufService,arquivoDAO,municipioDAO,pessoaDAO,ufDAO&#93;; parent: org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans &#91;dataSource,config,sqlErrorCodesTranslator,neoImageResolver,neoFormater,authorizationDAO,jdbcTemplate,sessionFactory,hibernateTemplate,hibernateTransactionManager,transactionTemplate,multipartResolver&#93;; root of BeanFactory hierarchy}
12:40:53,500 ERROR &#91;ContextLoader&#93; 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 &#91;class dao.AutorizacaoDAO&#93; 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&#40;AbstractAutowireCapableBeanFactory.java:897&#41;
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean&#40;AbstractAutowireCapableBeanFactory.java:817&#41;
</pre>
		</div>

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.  8)

AutorizacaoDAO:
<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
@Bean
public class AutorizacaoDAO implements AuthorizationDAO{
	
	public HibernateTemplate hibernateTemplate;

	public void setHibernateTemplate&#40;HibernateTemplate hibernateTemplate&#41; {
		this.hibernateTemplate = hibernateTemplate;
	}
</pre>
		</div>

AutorizacaoService:
<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
@ServiceBean
public class AutorizacaoService extends GenericService&lt;AutorizacaoDAO&gt; {

	public AutorizacaoDAO autorizacaoDAO;

	public void setAutorizacaoDAO&#40;AutorizacaoDAO autorizacaoDAO&#41; {
		this.autorizacaoDAO = autorizacaoDAO;
	}

	public User usuarioValido&#40;Usuario usuario&#41; {
		if &#40;usuario != null && usuario.getLogin&#40;&#41; != null
				&& !usuario.getLogin&#40;&#41;.isEmpty&#40;&#41;&#41; {
			User userByLogin = autorizacaoDAO.findUserByLogin&#40;usuario
					.getLogin&#40;&#41;&#41;;
			if &#40;userByLogin != null
					&& userByLogin.getPassword&#40;&#41;.equals&#40;usuario.getPassword&#40;&#41;&#41;&#41; {
				return userByLogin;
			}
		}
		return null;
	}
}
</pre>
		</div>

LoginController:
<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
@Controller&#40;path = "/modulo/login"&#41;
public class LoginController extends MultiActionController {

	private static final String AFTER_LOGIN_GO_TO = "/secured/crud/pessoa";

	public AutorizacaoService autorizacaoService;

	public void setAutorizacaoService&#40;AutorizacaoService autorizacaoService&#41; {
		this.autorizacaoService = autorizacaoService;
	}

	@DefaultAction
	public ModelAndView doPage&#40;WebRequestContext request, Usuario usuario&#41; {
		return new ModelAndView&#40;"login", "usuario", usuario&#41;;
	}

	public ModelAndView doLogin&#40;WebRequestContext request, Usuario usuario&#41; {
		User userByLogin = autorizacaoService.usuarioValido&#40;usuario&#41;;
		if &#40;userByLogin != null&#41; {
			request.setUserAttribute&#40;"USER", userByLogin&#41;;
			request.setUserAttribute&#40;MenuTag.MENU_CACHE_MAP, null&#41;;
			return new ModelAndView&#40;"redirect:" + AFTER_LOGIN_GO_TO&#41;;
		} else {
			request.addMessage&#40;"Login e/ou senha inválidos", MessageType.ERROR&#41;;
		}
		usuario.setSenha&#40;null&#41;;
		return doPage&#40;request, usuario&#41;;
	}

}
</pre>
		</div>

Att.
Edson.]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/266.page#1735</guid>
				<link>http://www.neoframework.org/forum/posts/list/266.page#1735</link>
				<pubDate><![CDATA[Thu, 16 Apr 2009 13:06:26]]> GMT</pubDate>
				<author><![CDATA[ edson.goncalez]]></author>
			</item>
			<item>
				<title>Re:Erro ao anotar @Bean</title>
				<description><![CDATA[ Olá Edson, o problema está aqui:

<span class="genmed"><b>Code:</b></span><br>
		<div>
		<pre bbCodeId="pre-code" style="overflow: auto; width: 95%; max-height: 350px; height:expression(this.scrollHeight > 350 ? '350px' : 'auto');">
@Bean
 public class AutorizacaoDAO implements AuthorizationDAO{
</pre>
		</div>

O bean que implementar AuthorizationDAO <b>não</b> deve utilizar a anotação @Bean.

Esse bean já será reconhecido e registrado pelo neo automaticamente (mesmo sem a anotacao), então se voce utilizar a anotacao, seu bean será registrado 2 vezes, causando confusão na injeçao de dependencia.

Até mais

Rógel]]></description>
				<guid isPermaLink="true">http://www.neoframework.org/forum/posts/list/266.page#1737</guid>
				<link>http://www.neoframework.org/forum/posts/list/266.page#1737</link>
				<pubDate><![CDATA[Sat, 18 Apr 2009 17:01:04]]> GMT</pubDate>
				<author><![CDATA[ rogel.garcia]]></author>
			</item>
	</channel>
</rss>