栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

了解Spring Data JPA @NoRepositoryBean接口

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

了解Spring Data JPA @NoRepositoryBean接口

注释用于避免为实际上与存储库接口的条件匹配但不希望成为接口的接口创建存储库代理。仅在开始扩展具有功能的所有存储库时才需要它。让我举一个例子:

假设您想向所有存储库添加方法foo()。您将首先添加这样的repo接口

public interface com.foobar.MybaseInterface<…,…> extends CrudRepository<…,…> {  void foo();}

您还将添加相应的实现类,工厂等。您的具体存储库接口现在将扩展该中间接口:

public interface com.foobar.CustomerRepository extends MybaseInterface<Customer, Long> {}

现在假设您要进行引导-假设是Spring Data JPA,如下所示:

<jpa:repositories base-package="com.foobar" />

您使用

com.foobar
是因为您
CustomerRepository
在同一个程序包中。现在,Spring
Data基础结构无法告知它
MybaseRepository
不是具体的存储库接口,而是充当中间存储库以公开其他方法。因此,它将尝试为其创建存储库代理实例,然后失败。现在,您可以使用
@NoRepositoryBean
此中间接口进行注释,以实质上告诉Spring
Data:不要为此接口创建存储库代理Bean。

这情景也是为什么原因

CrudRepository
PagingAndSortingRepository
携带这种标注为好。如果程序包扫描偶然发现了那些(因为您是用这种方式意外配置的),则引导程序将失败。

长话短说:使用注释可防止将存储库接口用作候选对象,最终最终成为存储库bean实例。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/399986.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号