title: Spring-data : Error creating bean with name 'mainController': Unsatisfied dependency expressed through field 'userService'
body: <p>I am new to spring-boot, when i try to run the <code>mvn clean install</code>  the terminal gives me this <strong>ERROR</strong>:</p>
  <pre><code>[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 7.465 s &lt;&lt;&lt; FAILURE! - in com.example.accessingdatamysql.AccessingDataMySqlApplicationTests
  [ERROR] contextLoads  Time elapsed: 0.001 s  &lt;&lt;&lt; ERROR!
  java.lang.IllegalStateException: Failed to load ApplicationContext
  Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'mainController': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userServiceImpl': Unsatisfied dependency expressed through field 'mapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.example.accessingdatamysql.util.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
  Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userServiceImpl': Unsatisfied dependency expressed through field 'mapper'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.example.accessingdatamysql.util.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
  Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.example.accessingdatamysql.util.UserMapper' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
  
  [INFO]
  [INFO] Results:
  [INFO]
  [ERROR] Errors:
  [ERROR]   AccessingDataMySqlApplicationTests.contextLoads » IllegalState Failed to load ...
  [INFO]
  [ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
  [INFO]
  [INFO] ------------------------------------------------------------------------
  [INFO] BUILD FAILURE
  [INFO] ------------------------------------------------------------------------
  [INFO] Total time:  13.677 s
  [INFO] Finished at: 2020-10-03T22:37:51+02:00
  [INFO] ------------------------------------------------------------------------
  [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) on project accessingdatamysql: There are test failures.
  </code></pre>
  <p>I tried them all a bit but I can't get it started correctly, I've been stuck in this state for several days
  I add the various parts of the project
  <strong>AccessingDataMysqlApplication.java</strong></p>
  <pre><code>package com.example.accessingdatamysql;
  
  import org.springframework.boot.SpringApplication;
  import org.springframework.boot.autoconfigure.SpringBootApplication;
  import org.springframework.boot.autoconfigure.domain.EntityScan;
  import org.springframework.context.annotation.ComponentScan;
  
  
  @SpringBootApplication
  public class AccessingDataMysqlApplication {
  
    public static void main(String[] args) {
      SpringApplication.run(AccessingDataMysqlApplication.class, args);
    }
  
  }
  </code></pre>
  <p><strong>MainController.java</strong></p>
  <pre><code>package com.example.accessingdatamysql.rest;
  
  
  
  
  
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.transaction.annotation.Transactional;
  import org.springframework.web.bind.annotation.GetMapping;
  import org.springframework.web.bind.annotation.PostMapping;
  import org.springframework.web.bind.annotation.RequestParam;
  import org.springframework.web.bind.annotation.ResponseBody;
  import org.springframework.web.bind.annotation.RestController;
  
  import com.example.accessingdatamysql.model.dto.UserDto;
  import com.example.accessingdatamysql.service.UserService;
  
  
  @RestController
  public class MainController {
      
  @Autowired 
  private UserService userService;
  
    @Transactional
    @PostMapping(path=&quot;/demo/add&quot;)
    public @ResponseBody String addNewUser (@RequestParam String name
        , @RequestParam String email,@RequestParam String surname) 
    {
   
  
      UserDto n = new UserDto();
      n.setName(name);
      n.setSurname(surname);
      n.setEmail(email);
      userService.create(n);
      return &quot;Saved&quot;;
    }
  
  
  
   
  
  
    @GetMapping(&quot;/demo/first&quot;)
    public UserDto one(@RequestParam String name) {
     System.out.print(name);
    return userService.findFirstByName(name); 
    }
  }
  
  </code></pre>
  <p><strong>UserService.java</strong></p>
  <pre><code>package com.example.accessingdatamysql.service;
  
  import org.springframework.stereotype.Service;
  
  import com.example.accessingdatamysql.model.dto.UserDto;
  
  @Service
  public interface UserService {
  
      UserDto findFirstByName(String name);
      
      void create(UserDto user);
          
  }
    
  </code></pre>
  <p><strong>UserServiceImpl.java</strong></p>
  <pre><code>package com.example.accessingdatamysql.service;
  
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Service;
  
  import com.example.accessingdatamysql.model.dto.UserDto;
  import com.example.accessingdatamysql.model.entity.UserEntity;
  import com.example.accessingdatamysql.model.repo.UserRepository;
  import com.example.accessingdatamysql.util.UserMapper;
  
  @Service
  public class UserServiceImpl implements UserService{
      
      @Autowired
        private UserRepository userRepository;
      
      @Autowired
      UserMapper mapper;
  
      @Override
      public UserDto findFirstByName(String name) {
             UserEntity entity = userRepository.findFirstByName(name);
             
          return mapper.toDtoMapper(entity);
      }
  
      @Override
      public void create(UserDto user) {
           UserEntity entity = mapper.toEntityMapper(user);
           
           userRepository.create(entity);
          
      }
   
  }
  </code></pre>
  <p><strong>POM</strong></p>
  <pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
      xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
      &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
      &lt;parent&gt;
          &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
          &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
          &lt;version&gt;2.3.4.RELEASE&lt;/version&gt;
          &lt;relativePath/&gt; &lt;!-- lookup parent from repository --&gt;
      &lt;/parent&gt;
      &lt;groupId&gt;com.example&lt;/groupId&gt;
      &lt;artifactId&gt;accessingdatamysql&lt;/artifactId&gt;
      &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
      &lt;name&gt;project&lt;/name&gt;
      &lt;description&gt;Demo project for Spring Boot&lt;/description&gt;
  
      &lt;properties&gt;
          &lt;java.version&gt;1.8&lt;/java.version&gt;
              &lt;/properties&gt;
  
      &lt;dependencies&gt;
              &lt;dependency&gt;
              &lt;groupId&gt;org.mapstruct&lt;/groupId&gt;
              &lt;artifactId&gt;mapstruct&lt;/artifactId&gt;
              &lt;version&gt;1.3.1.Final&lt;/version&gt;
          &lt;/dependency&gt;
          &lt;dependency&gt;
              &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
              &lt;artifactId&gt;spring-boot-starter-data-jpa&lt;/artifactId&gt;
          &lt;/dependency&gt;
          &lt;dependency&gt;
              &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
              &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
          &lt;/dependency&gt;
  
          &lt;dependency&gt;
              &lt;groupId&gt;mysql&lt;/groupId&gt;
              &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt;
              &lt;scope&gt;runtime&lt;/scope&gt;
          &lt;/dependency&gt;
          &lt;dependency&gt;
              &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
              &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
              &lt;scope&gt;test&lt;/scope&gt;
              &lt;exclusions&gt;
                  &lt;exclusion&gt;
                      &lt;groupId&gt;org.junit.vintage&lt;/groupId&gt;
                      &lt;artifactId&gt;junit-vintage-engine&lt;/artifactId&gt;
                  &lt;/exclusion&gt;
              &lt;/exclusions&gt;
          &lt;/dependency&gt;
      &lt;/dependencies&gt;
  
      &lt;build&gt;
          &lt;plugins&gt;
              &lt;plugin&gt;
                  &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
                  &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
              &lt;/plugin&gt;
          &lt;/plugins&gt;
      &lt;/build&gt;
  
  &lt;/project&gt;
  </code></pre>
  <p><strong>The structure of my project is this</strong>:</p>
  <pre><code>src-&gt;com-&gt;example-&gt;accessingdatamysql|-----&gt;model
                                       |-----&gt;repo
                                       |-----&gt;util
                                       |-----&gt;service
                                       |-----&gt;rest-----&gt;Main.Controller.java
                                       |-----&gt;AccessingDataMysqlApplication.java
  
  </code></pre>
  <p><strong>UserMapper.java</strong></p>
  <pre><code>package com.example.accessingdatamysql.util;
  
  import org.mapstruct.Mapper;
  
  import com.example.accessingdatamysql.model.dto.UserDto;
  import com.example.accessingdatamysql.model.entity.UserEntity;
  
  
  @Mapper (componentModel = &quot;spring&quot;)
  public interface UserMapper {
  
      UserEntity toEntityMapper (UserDto user);
      
      UserDto toDtoMapper (UserEntity userEntity);
  }
  </code></pre>
  <p>I tried to make changes With the MainController, to change the Controller but there are no changes. Entering either @EntityScan or @Component didn't help me in any way</p>