Pessoal,
Em primeiro lugar desculpem o off-topic, mas sei que alguns colegas daqui
usam o Spring
no backend java como eu...
Baixei a última versão do blazeds e criei um projeto teste com o
blazeds-spring.war.
Tudo beleza, mas estou tendo um problema na injeção de dependência com o
Spring.
Segue as minhas classes
public interface IUsuarioDAO {
public void save();
}
@Repository(value = "usuarioDAO")
@Transactional(propagation=Propagation.REQUIRED,
rollbackFor=Exception.class)
public class UsuarioDAO implements IUsuarioDAO {
@Override
public void save() {
// TODO Auto-generated method stub
}
}
public interface IUsuarioUseCase {
public void salva(Usuario usuario);
}
@Service(value = "usuarioUseCase")
@RemotingDestination
public class UsuarioUseCase implements IUsuarioUseCase {
protected UsuarioDAO dao;
@Autowired
@RemotingExclude
public void setDao(UsuarioDAO dao) {
this.dao = dao;
}
@Override
public void salva(Usuario usuario) {
dao.save();
System.out.println("salva...");
}
}
Rodo a aplicação e recebo o seguinte erro:
SEVERE: Exception sending context initialized event to listener instance of
class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'usuarioUseCase': Injection of autowired dependencies failed;
nested exception is org.springframework.beans.factory.BeanCreationException:
Could not autowire method: public void
r2.usuario.UsuarioUseCase.setDao(r2.usuario.UsuarioDAO); nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching
bean of type [r2.usuario.UsuarioDAO] found for dependency: expected at least
1 bean which qualifies as autowire candidate for this dependency. Dependency
annotations: {}
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:286)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1064)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:574)
at
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
at
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: org.springframework.beans.factory.BeanCreationException: Could
not autowire method: public void
r2.usuario.UsuarioUseCase.setDao(r2.usuario.UsuarioDAO); nested exception is
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching
bean of type [r2.usuario.UsuarioDAO] found for dependency: expected at least
1 bean which qualifies as autowire candidate for this dependency. Dependency
annotations: {}
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:608)
at
org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:84)
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:283)
... 28 more
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No matching bean of type [r2.usuario.UsuarioDAO] found for dependency:
expected at least 1 bean which qualifies as autowire candidate for this
dependency. Dependency annotations: {}
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:914)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:783)
at
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:697)
at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:559)
... 30 more
28/08/2010 16:17:11 org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
Alguém sabe o porque que isso ocorre?
Tenho uma arquitetura semelhante no spring 2.5 e esse problema não ocorre.
Abaixo trecho do appConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
.
.
.
.
.
<!-- Habilita os Services para serem transicionais via a Annotation
@Transactional -->
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- Ativa a deteccao de Anotacoes do Spring -->
<context:annotation-config/>
<context:component-scan base-package="r2" />
Ao que parece ele diz que o bean usuarioDAO não é único (mas é)...
Já tentei usar @Qualifier e nada..
Se alguém souber de algo que possa resolver fico agradecido
--
[]'s
Leonardo
Linux User #488650
Ubuntu User #27045
Mais sobre o Ubuntu em português: http://www.ubuntu-br.org/comece
--
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev