title: Spring-boot CrudRepository autowiring error
body: <p>I have the <a href="https://i.stack.imgur.com/INHdc.png" rel="noreferrer">following code structure</a> of my Springboot Application:</p>
  
  <p><a href="https://i.stack.imgur.com/RVW8n.png" rel="noreferrer"><img src="https://i.stack.imgur.com/RVW8n.png" alt="structure"></a></p>
  
  <p>I am getting exception of <code>NoSuchBeanDefinitionException</code> for bean <code>UserDao</code> . </p>
  
  <p>Exception Trace : </p>
  
  <pre><code>Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.matlb.dao.UserDao] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotat`enter code here`ion.Autowired(required=true)}
      at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
      at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
      at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
      at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE]
      ... 37 common frames omitted
  </code></pre>
  
  <p>The source code of UserDao.java interface is </p>
  
  <pre><code>package com.matlb.dao;
  
  import com.matlb.domain.User;
  import org.springframework.data.repository.CrudRepository;
  import org.springframework.stereotype.Repository;
  
  @Repository
  public interface UserDao extends CrudRepository&lt;User,Integer&gt;{
  
      User findByEmail(String email);
  }
  </code></pre>
  
  <p>and I am autowiring it here </p>
  
  <pre><code>package com.matlb.service;
  
  import com.matlb.dao.UserDao;
  import com.matlb.domain.User;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Service;
  
  import java.util.List;
  
  @Service
  public class UserServiceImpl implements UserService {
  
      @Autowired
      private UserDao userDao;
  
      @Override
      public List&lt;User&gt; findAll() {
          return (List&lt;User&gt;) getUserDao().findAll();
      }
  
      @Override
      public User createUser(String email) {
          User user = new User(email);
          return saveUser(user);
      }
  
      @Override
      public User findById(Integer userId) {
          return getUserDao().findOne(userId);
      }
  
      @Override
      public User saveUser(User user) {
          return getUserDao().save(user);
      }
  
      @Override
      public User findByEmail(String email) {
          return getUserDao().findByEmail(email);
      }
  
      @Override
      public void delete(Integer userId) {
          getUserDao().delete(userId);
      }
  
      public UserDao getUserDao() {
          return userDao;
      }
  }
  </code></pre>
  
  <p>Source of Main class</p>
  
  <pre><code>package com.matlb;
  
  import org.springframework.boot.SpringApplication;
  import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
  import org.springframework.boot.autoconfigure.SpringBootApplication;
  import org.springframework.context.annotation.ComponentScan;
  import org.springframework.context.annotation.Configuration;
  
  @SpringBootApplication
  public class MatlbApplication {
  
      public static void main(String[] args) {
          SpringApplication.run(MatlbApplication.class, args);
      }
  }
  </code></pre>
  
  <p>build.gradle </p>
  
  <pre><code>buildscript {
      ext {
          springBootVersion = '1.3.3.RELEASE'
      }
      repositories {
          mavenCentral()
      }
      dependencies {
          classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
          classpath("org.springframework:springloaded:1.2.1.RELEASE")
      }
  }
  
  apply plugin: 'java'
  apply plugin: 'eclipse'
  apply plugin: 'idea'
  apply plugin: 'spring-boot' 
  
  jar {
      baseName = 'demo'
      version = '0.0.1-SNAPSHOT'
  }
  sourceCompatibility = 1.8
  targetCompatibility = 1.8
  
  repositories {
      mavenCentral()
  }
  
  
  dependencies {
      compile('org.springframework.boot:spring-boot-starter-aop')
      compile('org.springframework.boot:spring-boot-starter-web')
      compile("org.springframework.boot:spring-boot-devtools")
      compile("org.springframework.boot:spring-boot-starter-data-jpa")
      runtime('mysql:mysql-connector-java')
      testCompile('org.springframework.boot:spring-boot-starter-test') 
      testCompile('org.springframework.restdocs:spring-restdocs-mockmvc')
  }
  
  idea {
      module {
          inheritOutputDirs = false
          outputDir = file("$buildDir/classes/main/")
      }
  }
  
  eclipse {
      classpath {
           containers.remove('org.eclipse.jdt.launching.JRE_CONTAINER')
           containers 'org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8'
      }
  }
  
  task wrapper(type: Wrapper) {
      gradleVersion = '2.9'
  }
  </code></pre>
  
  <p>Please let me know where I'm doing it wrong . I'm using Intellij as IDE and its showing bean as created when I use the <code>@Repository</code> annotation.</p>