Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No matching bean of type ... found for dependency

after some days of trying and waitin' for answers on the springsource forums I'll try it here. Running my application results in these exception:

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) 

Here's the relevant code

application context:

<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;   } } 

service:

@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 );   } } 
like image 755
dtrunk Avatar asked Jan 22 '12 13:01

dtrunk


1 Answers

Multiple things can cause this, I didn't bother to check your entire repository, so I'm going out on a limb here.

First off, you could be missing an annotation (@Service or @Component) from the implementation of com.example.my.services.user.UserService, if you're using annotations for configuration. If you're using (only) xml, you're probably missing the <bean> -definition for the UserService-implementation.

If you're using annotations and the implementation is annotated correctly, check that the package where the implementation is located in is scanned (check your <context:component-scan base-package= -value).

like image 185
esaj Avatar answered Sep 19 '22 14:09

esaj