Claramente me falta algo aquí.
Estoy haciendo una simple spring boot aplicación con spring data jpa inluded y la cara siguiente error:

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [locassa.domain.repository.PersonRepository] 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)}
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1373) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1119) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545) ~[spring-beans-4.2.3.RELEASE.jar:4.2.3.RELEASE]
    ... 32 common frames omitted

Mi código:

Aplicación:

@SpringBootApplication
@ComponentScan(basePackages = {"app.controller", "app.domain"})
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pl.mosek</groupId>
<artifactId>pl.mosek</artifactId>
<version>0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

Controlador:

@RestController
public class TestController {
@Autowired
PersonService personService;
@RequestMapping("/")
public String index() {
return "Test spring boot";
}
@RequestMapping("/person/{id}")
public Person personById(@PathVariable Long id) {
return personService.findPerson(id);
}
}

PersonService:

public interface PersonService {
Person findPerson(Long id);
}

PersonServiceImpl:

@Service
public class PersonServiceImpl implements PersonService {
@Autowired
PersonRepository personRepository;
public Person findPerson(Long id) {
return personRepository.findOne(id);
}
}

PersonRepository (este no puede ser autowired):

public interface PersonRepository extends CrudRepository<Person, Long> {
}

Buscado en la web ya. No he encontrado una cosa. Alguna idea?

clases del paquete>»)public class Aplicación {}, es suficiente para eliminar el exceso de anotaciones.

OriginalEl autor krzakov | 2015-12-09

1 Comentario

  1. 23

    Yo también tenía el mismo problema.He resuelto con la siguiente solución. Si las clases de Entidad y Repositorios en un paquete diferente que usted necesita para usar las siguientes anotaciones.

    @SpringBootApplication
    @EntityScan(basePackages = {"EntityPackage"} )
    @EnableJpaRepositories(basePackages = {"RepositoryPackage"})
    public class Application {
    public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
    }
    }
    Ambos de ellos son menores de app.domain. Entidades están bajo app.domain.model y los repositorios bajo app.domain.repository
    Traté de @EnableJpaRepositories pero sin combinationwith @EntityScan. Ambas anotaciones resolver el isssue.
    Muchas gracias.
    Así que usted no necesita la autowire?
    De alguna manera, que fija el error ..

    OriginalEl autor sasanka

Dejar respuesta

Please enter your comment!
Please enter your name here