将存储库接口注释为 @Component 有任何缺点吗?

Does annotating a repository interface as @Component have any cons?

我有这个界面:

public interface liteRepository extends CrudRepository<liteEntity, Long>, JpaSpecificationExecutor<liteEntity> {...}

有效,一切正常。

但是,intellij 不会将此 class 注册为 spring 组件。如果我用 @Component 注释此接口,那么 intellij 会将其识别为 spring bean,并且我可以 @Autowire 在我的集成测试中使用此存储库。

我的代码在注释后仍然有效,但我不确定我没有弄乱我不应该弄乱的东西。

问题:
这个接口加@Component注解有什么坏处吗?

@Component 注释的唯一含义是 class 在 Spring 的组件扫描期间有资格成为 Spring bean。

因此,如果您希望它成为一个 Spring bean 并且您没有在其他任何地方将其定义为 Spring bean,您可以安全地添加 @Component 注释。

当然,只有当你在某处配置了实际的组件扫描(例如 <context:component-scan base-package="..."> 在某些 Spring 配置文件中)时,这才会起作用,我假设你已经开始了,因为添加注释后,bean 会正确地自动装配。