我得到下一个错误:
找不到com.myproject.services.ansService中的字段ansRepo所需的类型为“com.myproject.repositories.ansRepo”的Bean。
我有一个控制器,它有4个带自动连线注解的服务:
@RestController
public class Controller {
@Autowired
private AnsService ansService
@Autowired
private QService QService;
@Autowired
private UService UService;
这些服务中的每一个都有@Service注解:
@Service
public class ansService {
@Autowired
private AnsRepo ansrepo;
每个存储库都有一个@Repository注解:
@Repository
public interface AnsRepo extends JpaRepository<Ans,Long> {
...
}
控制器中的第一个autowired对象会出现该错误,因此看起来Spring应用程序无法找到autowired类。
我的项目结构:
-com.myproject
----Main.java
----controllers
------------Controller.java
----entities
------------ans.java
----repositories
------------ansRepo.java
----services
------------ansService.java
我主要:
package com.postmalone.Application;
import org.springframework.boot.SpringApplication;
@SpringBootApplication(scanBasePackages={"com.myproject.controllers",
"com.myproject.services", "com.myproject.repositories",
"com.myproject.entities"})
public class Main {
public static void main(String[] args) throws InterruptedException {
SpringApplication.run(Main.class,args);
我很确定这个问题是@SpringBootApplication注解的问题。我看到有很多关于这个错误的帖子,但是在我的例子中,我已经实现了所有提供的解决方案。
我还应该检查什么?
更新
我在主应用程序中添加了@EnableJpaRepositories(“com.myproject.repositories”)注解。
找不到com.postmalone.services.AnswService中的字段ansRepo所需的名为“entityManagerFactory”的Bean。
pom.xml文件中的依赖项:
<dependencies>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.1.4</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.6.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.3.6.Final</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.1.1.RELEASE</version>
</dependency>
</dependencies>
当我有@SpringBootApplication时,为什么我需要提到@ EnableJPARepositiory注解?为什么我会得到这个错误?
2条答案
按热度按时间u1ehiz5o1#
好的,我注意到你没有一个根包,它应该被控制器,实体,仓库和服务共享。为了在根包的开始扫描,只需通过以下方式添加:
并按以下方式重命名其他软件包:
d8tt03nd2#
在我的例子中,解决方案只是在pom.xml中添加下一个依赖项:
而不是: