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

Why EntityScan , EnableJpaRepositories annotations required if we are already using componentScan annotation?

我已经在 spring 启动应用程序的主要 class 中使用了 componentScan 注释,但是如果我只使用这个注释,它会在获取存储库引用时出现问题。所以为了克服这个问题,我使用 EntityScanEnableJpaRepositories 注释 componentScan.

@EntityScan(basePackages={"com.gonkar.fleetms.models"})
@EnableJpaRepositories(basePackages={"com.gonkar.fleetms.repositories"})

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

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

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

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

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