如果我们已经使用了 componentScan 注释,为什么还需要 EntityScan 、 EnableJpaRepositories 注释?

Onk*_*arG 9 java spring spring-annotations spring-boot

我已经在 app类ComponentScan中使用注释,但是如果我仅使用此注释,它将在获取存储库引用时出现问题。因此,为了克服这个问题,我正在使用和注释。MainSpring BootEntityScanEnableJpaRepositoriescomponentScan

@EntityScan(basePackages={"com.gonkar.fleetms.models"})
@EnableJpaRepositories(basePackages={"com.gonkar.fleetms.repositories"})
Run Code Online (Sandbox Code Playgroud)

所以我的问题是为什么需要使用其他两个注释?如果我已经在使用@ComponentScan.

Ale*_*ina 13

@ComponentScan注释用于为用@Component, @Controller/ @RestController, @Service,注释的类创建 bean @Repository。它标记它们被添加到 Spring 容器中(使它们有资格进行依赖注入并允许它们@Autowired)。

@EntityScan注释不会创建任何 bean,它标识 JPA 持久性上下文应使用哪些类。

@EnableJpaRepositories注释用于从 Spring Data 接口创建存储库类。

这三个注释经常一起使用,但它们负责不同的事情。