title: Consider defining a bean of type 'com.ensat.services.ProductService' in your configuration
body: <p>I have</p>
  
  <pre><code>package com.example;
  
  import org.springframework.boot.SpringApplication;
  import org.springframework.boot.autoconfigure.SpringBootApplication;
  import org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration;
  import org.springframework.boot.autoconfigure.domain.EntityScan;
  import org.springframework.boot.builder.SpringApplicationBuilder;
  import org.springframework.boot.web.support.SpringBootServletInitializer;
  import org.springframework.context.annotation.ComponentScan;
  import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
  import org.springframework.transaction.annotation.EnableTransactionManagement;
  
  @SpringBootApplication
  @ComponentScan(basePackages = {"hello","com.ensat.controllers"})
  @EntityScan("com.ensat.entities")
  public class Application extends SpringBootServletInitializer {
  
      @Override
      protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
          return application.sources(Application.class);
      }
  
      public static void main(String[] args) throws Exception {
          SpringApplication.run(Application.class, args);
      }
  
  }
  </code></pre>
  
  <p><strong>ProductController.java</strong></p>
  
  <pre><code>package com.ensat.controllers;
  
  import com.ensat.entities.Product;
  import com.ensat.services.ProductService;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Controller;
  import org.springframework.ui.Model;
  import org.springframework.web.bind.annotation.PathVariable;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.RequestMethod;
  
  /**
   * Product controller.
   */
  @Controller
  public class ProductController {
  
      private ProductService productService;
  
      @Autowired
      public void setProductService(ProductService productService) {
          this.productService = productService;
      }
  
      /**
       * List all products.
       *
       * @param model
       * @return
       */
      @RequestMapping(value = "/products", method = RequestMethod.GET)
      public String list(Model model) {
          model.addAttribute("products", productService.listAllProducts());
          System.out.println("Returning rpoducts:");
          return "products";
      }
  
      /**
       * View a specific product by its id.
       *
       * @param id
       * @param model
       * @return
       */
      @RequestMapping("product/{id}")
      public String showProduct(@PathVariable Integer id, Model model) {
          model.addAttribute("product", productService.getProductById(id));
          return "productshow";
      }
  
      // Afficher le formulaire de modification du Product
      @RequestMapping("product/edit/{id}")
      public String edit(@PathVariable Integer id, Model model) {
          model.addAttribute("product", productService.getProductById(id));
          return "productform";
      }
  
      /**
       * New product.
       *
       * @param model
       * @return
       */
      @RequestMapping("product/new")
      public String newProduct(Model model) {
          model.addAttribute("product", new Product());
          return "productform";
      }
  
      /**
       * Save product to database.
       *
       * @param product
       * @return
       */
      @RequestMapping(value = "product", method = RequestMethod.POST)
      public String saveProduct(Product product) {
          productService.saveProduct(product);
          return "redirect:/product/" + product.getId();
      }
  
      /**
       * Delete product by its id.
       *
       * @param id
       * @return
       */
      @RequestMapping("product/delete/{id}")
      public String delete(@PathVariable Integer id) {
          productService.deleteProduct(id);
          return "redirect:/products";
      }
  
  }
  </code></pre>
  
  <p><strong>ProductService.java</strong></p>
  
  <pre><code>package com.ensat.services;
  
  import com.ensat.entities.Product;
  
  public interface ProductService {
  
      Iterable&lt;Product&gt; listAllProducts();
  
      Product getProductById(Integer id);
  
      Product saveProduct(Product product);
  
      void deleteProduct(Integer id);
  
  }
  </code></pre>
  
  <p><strong>ProductServiceImpl.java</strong></p>
  
  <pre><code>package com.ensat.services;
  
  import com.ensat.entities.Product;
  import com.ensat.repositories.ProductRepository;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Service;
  
  /**
   * Product service implement.
   */
  @Service
  public class ProductServiceImpl implements ProductService {
  
      private ProductRepository productRepository;
  
      @Autowired
      public void setProductRepository(ProductRepository productRepository) {
          this.productRepository = productRepository;
      }
  
      @Override
      public Iterable&lt;Product&gt; listAllProducts() {
          return productRepository.findAll();
      }
  
      @Override
      public Product getProductById(Integer id) {
          return productRepository.findOne(id);
      }
  
      @Override
      public Product saveProduct(Product product) {
          return productRepository.save(product);
      }
  
      @Override
      public void deleteProduct(Integer id) {
          productRepository.delete(id);
      }
  
  }
  </code></pre>
  
  <p>This is my error:</p>
  
  <pre><code>***************************
  APPLICATION FAILED TO START
  ***************************
  
  Description:
  
  Parameter 0 of method setProductService in com.ensat.controllers.ProductController required a bean of type 'com.ensat.services.ProductService' that could not be found.
  
  
  Action:
  
  Consider defining a bean of type 'com.ensat.services.ProductService' in your configuration.
  </code></pre>
  
  <p>I have full log: <a href="https://gist.github.com/donhuvy/b918e20eeeb7cbe3c4be4167d066f7fd" rel="nofollow noreferrer">https://gist.github.com/donhuvy/b918e20eeeb7cbe3c4be4167d066f7fd</a></p>
  
  <p>This is my full source code
  <a href="https://github.com/donhuvy/accounting/commit/319bf6bc47997ff996308c890eba81a6fa7f1a93" rel="nofollow noreferrer">https://github.com/donhuvy/accounting/commit/319bf6bc47997ff996308c890eba81a6fa7f1a93</a></p>
  
  <p>How to fix error?</p>