java - tutorial - No se ha encontrado ningún bean de tipo... encontrado para la dependencia
jframe form netbeans (8)
después de algunos días de intentar y esperar respuestas en los foros de springsource, lo intentaré aquí. La ejecución de los resultados de mi aplicación en estas excepciones:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.example.my.services.user.UserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:924)
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:793)
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:707)
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:478)
org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)
org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)
org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)
org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)
org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
javax.servlet.GenericServlet.init(GenericServlet.java:212)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
java.lang.Thread.run(Thread.java:662)
Aquí está el código relevante
contexto de la aplicación:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="org.postgresql.Driver" />
<property name="url" value="jdbc:postgresql://localhost:5432/test" />
<property name="username" value="test" />
<property name="password" value="test" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.example.my.entities.*" />
<property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
</bean>
<tx:annotation-driven />
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
com.example.my.entities.user:
@Entity
@Table( name = "tbl_users" )
public class User
{
@Id
@Column( name = "id" )
@GeneratedValue
private int id;
@Column( name = "username" )
private String username;
@Column( name = "password" )
private String password;
public void setId( int id )
{
this.id = id;
}
public int getId()
{
return id;
}
public void setUsername( String username )
{
this.username = username;
}
public String getUsername()
{
return username;
}
public void setPassword( String password )
{
this.password = password;
}
public String getPassword()
{
return password;
}
}
Servicio:
@Service
public class UserServiceImpl implements UserService
{
@Autowired
private UserDAO userDAO;
@Override
@Transactional
public void addUser( User user )
{
userDAO.addUser( user );
}
@Override
@Transactional
public List<User> listUsers()
{
return userDAO.listUsers();
}
@Override
@Transactional
public void removeUser( int id )
{
userDAO.removeUser( id );
}
}
Agregue annotation @Repository al encabezado de userDao class. Si userDao es una interfaz, agregue esta anotación a los implements de la interfaz.
Agregue esto a usted applicationContext:
<bean id="userService" class="com.example.my.services.user.UserServiceImpl ">
En mi caso, fue la dependencia incorrecta para CrudRepository. Mi IDE agregó también siguiente:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>1.11.2.RELEASE</version>
</dependency>
Pero solo necesitaba:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>RELEASE</version>
</dependency>
Saqué el primero y todo estuvo bien.
Múltiples cosas pueden causar esto, no me molesté en revisar todo tu repositorio, así que me voy de aquí para allá.
En primer lugar, podría perder una anotación (@Service o @Component) de la implementación de com.example.my.services.user.UserService
, si está utilizando anotaciones para la configuración. Si usa (solo) xml, es probable que le falte la definición de <bean>
para la implementación de UserService.
Si usa anotaciones y la implementación está anotada correctamente, verifique que el paquete en el que se encuentra la implementación se escanea (consulte su <context:component-scan base-package=
-value).
Si esto solo ocurre en implementaciones, asegúrese de tener la dependencia del paquete al que hace referencia en .war. Por ejemplo, esto funcionaba localmente en mi máquina, con configuraciones de depuración funcionando bien, pero después de implementar en Elastic Beanstalk de Amazon, recibí este error y noté que una de las dependencias no estaba incluida en el paquete .war.
Tengo problemas similares en la configuración de prueba, debido al uso de AOP. Agregué esta línea de código en spring-config.xml
<aop:config proxy-target-class="true"/>
Y funciona !
Tuve el mismo problema, pero en mi caso, la clase implementada se convirtió accidentalmente en "abstracta", ya que el cableado automático fallaba.
Tuve un problema similar pero me faltaba el (@Service o @Component) de la implementación de com.example.my.services.myUser.MyUserServiceImpl