Spring Boot中@NoRepositoryBean注解如何使用?出现cannot find symbol报错怎么解决
报错解决与@NoRepositoryBean正确使用方法
报错原因
你遇到的cannot find symbol @NoRepositoryBean报错由两个问题导致:
- 导包错误:你当前仅引入了
org.springframework.data.repository包,未导入注解对应的完整类路径,正确导入语句为import org.springframework.data.repository.NoRepositoryBean; - 场景不匹配:
@NoRepositoryBean是Spring Data生态的专属注解,仅作用于继承了Spring DataRepository接口(或其子接口如JpaRepository、CrudRepository)的接口,如果你当前项目使用MyBatis作为持久层框架,不需要使用该注解,直接删除即可。
@NoRepositoryBean正确使用规则
该注解的作用是标记公共父级Repository接口,告知Spring不要为当前接口创建代理实现类,仅用于给其他业务Repository继承、复用公共方法。
正确使用示例如下:
import org.springframework.data.repository.NoRepositoryBean; import org.springframework.data.jpa.repository.JpaRepository; import java.time.LocalDateTime; import java.util.List; // 公共父接口,加注解避免Spring创建实例 @NoRepositoryBean public interface BaseRepository<T, ID> extends JpaRepository<T, ID> { // 各业务Repository通用的公共方法 LocalDateTime queryRecordCreateTime(ID id); } // 业务Repository继承公共父接口,Spring会为该接口生成代理实现 public interface YearReportRepository extends BaseRepository<YearReport, Long> { // 业务自定义方法 List<YearReport> queryByYear(Integer year); }
内容的提问来源于stack exchange,提问作者Yegor Sozonov
相关产品推荐
相关产品推荐

