我显然在这里错过了一些东西。我正在制作一个简单的spring boot应用程序,它包含spring data jpa内陷和面部偏斜错误:
spring boot
spring data jpa
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
我的代码:
应用:
@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>
控制器:
@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); } }
人员服务:
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(无法自动连线):
public interface PersonRepository extends CrudRepository<Person, Long> { }
已在网上搜索。我没发现一件事。有任何想法吗?
我也有同样的问题,我通过以下解决方案解决了。如果您的实体类和存储库位于不同的包中,则需要使用以下注释。
@SpringBootApplication @EntityScan(basePackages = {"EntityPackage"} ) @EnableJpaRepositories(basePackages = {"RepositoryPackage"}) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }