title: Unsatisfied dependency expressed through field 'service': No qualifying bean of type
body: <p>I am creating new project using spring mvc and hibernate. This is my repository:</p>
  <pre><code>package com.cs545.ecom.repository;
  
  import java.util.List;
  
  import com.cs545.ecom.domain.Product;
  
  public interface ProductDAO {
      List&lt;Product&gt; getAllProducts();
  
      Product getProductById(int id);
  
      Product getProductByName(String name);
  
      Product addNewProduct(Product product);
  
      Product updateProduct(int productId, Product product);
  
  }
  </code></pre>
  <p>and this is the implementation</p>
  <pre><code>package com.cs545.ecom.repository.impl;
  
  import java.util.List;
  
  import org.hibernate.Session;
  import org.hibernate.SessionFactory;
  import org.hibernate.cfg.Configuration;
  import org.springframework.stereotype.Repository;
  
  import com.cs545.ecom.domain.Product;
  import com.cs545.ecom.repository.ProductDAO;
  
  @Repository
  public class ProductDAOimpl implements ProductDAO{
  
      SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();
      public List&lt;Product&gt; getAllProducts() {
          // TODO Auto-generated method stub
          return null;
      }
  
      public Product getProductById(int id) {
          // TODO Auto-generated method stub
          return null;
      }
  
      public Product getProductByName(String name) {
          // TODO Auto-generated method stub
          return null;
      }
  
      public Product addNewProduct(Product product) {
          Product productSaved=new Product();
          Session session=sessionFactory.openSession();
          session.beginTransaction();
          productSaved=(Product)session.save(product);
          session.getTransaction().commit();
          session.close();
          return productSaved;
      }
  
      public Product updateProduct(int productId, Product product) {
          // TODO Auto-generated method stub
          return null;
      }
  
  }
  </code></pre>
  <p>also this is the service interface</p>
  <pre><code>package com.cs545.ecom.service;
  
  import com.cs545.ecom.domain.Product;
  
  public interface ProductService {
      Product addNewProduct(Product product);
  }
  </code></pre>
  <p>and this is the service implementation</p>
  <pre><code>package com.cs545.ecom.service.impl;
  
  
  
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Component;
  import org.springframework.stereotype.Service;
  
  import com.cs545.ecom.domain.Product;
  import com.cs545.ecom.repository.ProductDAO;
  import com.cs545.ecom.service.ProductService;
  @Service
  public class ProductServiceImpl implements ProductService {
      @Autowired
      private ProductDAO repository;
  
      public Product addNewProduct(Product product) {
          return repository.addNewProduct(product);
      }
  
  }
  </code></pre>
  <p>this is the controller</p>
  <pre><code>package com.cs545.ecom.controller;
  
  
  
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Controller;
  import org.springframework.ui.Model;
  import org.springframework.web.bind.annotation.RequestMapping;
  
  import com.cs545.ecom.domain.Category;
  import com.cs545.ecom.domain.Product;
  import com.cs545.ecom.repository.ProductDAO;
  import com.cs545.ecom.service.ProductService;
  
  @Controller
  public class ProductController {
      @Autowired
      public ProductService service;
      
      @RequestMapping(&quot;/&quot;)
      public String start() {
          return &quot;UI/jsp/product&quot;;
      }
      @RequestMapping(&quot;/addproduct&quot;)
      public String addNewProduct(Model model){
      //  Product product=service.addNewProduct(new Product(&quot;Apple iphone&quot;, &quot;gfgfg&quot;, &quot;Amazing Iphone &quot;, new Category()));
          //Product product=new Product(&quot;Apple iphone&quot;, &quot;gfgfg&quot;, &quot;Amazing Iphone &quot;, new Category());
          
          //model.addAttribute(&quot;product&quot;,product);
          return &quot;UI/jsp/product&quot;;
      }
  }
  </code></pre>
  <p>when i run the program i got this error</p>
  <pre><code>HTTP Status 500 - Servlet.init() for servlet Dispatcher Servlet threw exception
  
  
  type Exception report
  
  message Servlet.init() for servlet Dispatcher Servlet threw exception
  
  description The server encountered an internal error that prevented it from fulfilling this request.
  
  exception
  javax.servlet.ServletException: Servlet.init() for servlet Dispatcher Servlet threw exception
      org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
      org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
      org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
      org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
      org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
      org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
      org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
      org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
      java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      java.lang.Thread.run(Unknown Source)
  
  
  root cause
  org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'productController': Unsatisfied dependency expressed through field 'service': No qualifying bean of type [com.cs545.ecom.service.ProductService] found for dependency [com.cs545.ecom.service.ProductService]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.cs545.ecom.service.ProductService] found for dependency [com.cs545.ecom.service.ProductService]: 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.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:569)
      org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
      org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
      org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
      org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
      org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
      org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
      org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
      org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
      org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
      org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:775)
      org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
      org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
      org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668)
      org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634)
      org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682)
      org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553)
      org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494)
      org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
      javax.servlet.GenericServlet.init(GenericServlet.java:158)
      org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
      org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
      org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
      org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
      org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
      org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
      org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
      org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
      java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      java.lang.Thread.run(Unknown Source)
  
  
  root cause
  org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.cs545.ecom.service.ProductService] found for dependency [com.cs545.ecom.service.ProductService]: 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:1403)
      org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1056)
      org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1018)
      org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:566)
      org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
      org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:349)
      org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
      org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
      org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
      org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
      org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
      org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
      org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
      org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:775)
      org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:861)
      org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
      org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:668)
      org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:634)
      org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:682)
      org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:553)
      org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:494)
      org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
      javax.servlet.GenericServlet.init(GenericServlet.java:158)
      org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
      org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
      org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
      org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
      org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
      org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
      org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
      org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
      java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
      java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
      org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      java.lang.Thread.run(Unknown Source)
  </code></pre>
  <p>This is my web.xml file:</p>
  <pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  &lt;web-app xmlns=&quot;http://xmlns.jcp.org/xml/ns/javaee&quot;
           xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
           xsi:schemaLocation=&quot;http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd&quot;
           version=&quot;3.1&quot;&gt;
      
      &lt;servlet&gt;
          &lt;servlet-name&gt;Dispatcher Servlet&lt;/servlet-name&gt;
          &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt;
          &lt;!--init-param is not needed when followed default naming convention for configuration file &quot;DefaultServlet-servlet.xml&quot;--&gt;
          &lt;init-param&gt;
              &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt;
              &lt;param-value&gt;
                  /WEB-INF/dispatcher-config.xml
              &lt;/param-value&gt;
          &lt;/init-param&gt;
          &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
      &lt;/servlet&gt;
    
      &lt;servlet-mapping&gt;
          &lt;servlet-name&gt;Dispatcher Servlet&lt;/servlet-name&gt;
          &lt;url-pattern&gt;/&lt;/url-pattern&gt;
      &lt;/servlet-mapping&gt;
    
      &lt;session-config&gt;
          &lt;session-timeout&gt;
              30
          &lt;/session-timeout&gt;
      &lt;/session-config&gt;
  &lt;/web-app&gt;
  </code></pre>
  <p>and this is spring configuration</p>
  <pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  &lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;
         xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xmlns:context=&quot;http://www.springframework.org/schema/context&quot;
         xmlns:mvc=&quot;http://www.springframework.org/schema/mvc&quot;
         xsi:schemaLocation=&quot;http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
          http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
          http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
      &quot;&gt;
    &lt;mvc:annotation-driven/&gt;
    &lt;mvc:resources mapping=&quot;/resources/**&quot; location=&quot;/resources/&quot;/&gt;
    &lt;context:component-scan base-package=&quot;com.cs545.ecom.controller&quot;/&gt;
    
    &lt;bean class=&quot;org.springframework.web.servlet.view.InternalResourceViewResolver&quot;&gt;
      &lt;property name=&quot;prefix&quot; value=&quot;/WEB-INF/views/&quot; /&gt;
      &lt;property name=&quot;suffix&quot; value=&quot;.jsp&quot;/&gt;
    &lt;/bean&gt;
    &lt;bean id= &quot;messageSource&quot;
  class=&quot;org.springframework.context.support.ResourceBundleMessageSource&quot;&gt;
  &lt;property name=&quot;basename&quot; value=&quot;messages&quot;/&gt;
  &lt;/bean&gt;
  
  &lt;/beans&gt;
  </code></pre>
  <p>also this is hibernate configuration</p>
  <pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
  &lt;!DOCTYPE hibernate-configuration PUBLIC
  &quot;-//Hibernate/Hibernate Configuration DTD 3.0//EN&quot;
  &quot;http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd&quot;&gt;
  &lt;hibernate-configuration&gt;
      &lt;session-factory&gt;
          &lt;property name=&quot;hibernate.bytecode.use_reflection_optimizer&quot;&gt;false&lt;/property&gt;
          &lt;property name=&quot;hibernate.connection.driver_class&quot;&gt;com.mysql.jdbc.Driver&lt;/property&gt;
          &lt;property name=&quot;hibernate.connection.password&quot;&gt;111111&lt;/property&gt;
          &lt;property name=&quot;hibernate.connection.url&quot;&gt;jdbc:mysql://localhost:3338/waaProject&lt;/property&gt;
          &lt;property name=&quot;hibernate.connection.username&quot;&gt;root&lt;/property&gt;
          &lt;property name=&quot;hibernate.dialect&quot;&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt;
          &lt;property name=&quot;show_sql&quot;&gt;true&lt;/property&gt;
          &lt;property name=&quot;hbm2ddl.auto&quot;&gt;update&lt;/property&gt;
          &lt;mapping class=&quot;com.cs545.ecom.domain.Product&quot;&gt;&lt;/mapping&gt;
      &lt;/session-factory&gt;
  &lt;/hibernate-configuration&gt;
  </code></pre>