使用 Spring Data Rest 时如何从组件扫描中排除 @Repository

2023-12-27

在 Spring Boot 项目中,我在从组件扫描中排除某些存储库时遇到问题。

我有一个包含一些实体和一些存储库(JpaRepositories)的库。由于某种原因,我实现了一个小型 Spring Boot Data Rest 应用程序,用于让测试人员快速访问实体。因此,我实现了一个扩展 PagingAndSortingRepository 的存储库,并用 @RepositoryRestResource 进行注释。

当应用程序启动时,将扫描所有存储库并使其可用。只要我只想让 Data Rest 存储库可用,我就对组件扫描器进行注释以排除不需要的存储库。但这行不通。我检查了执行器 bean 端点以及我所做的任何事情 - 不排除任何存储库。

为了演示这个问题,我创建了一个简单的演示应用程序:https://github.com/magomi/springboot-restdata-repoloading https://github.com/magomi/springboot-restdata-repoloading.

为了排除 DataRepository 我尝试了两种方法:

// exclude V02
@SpringBootApplication
@ComponentScan(excludeFilters = {
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
                DataRepository.class})
})

and

// exclude V01
@SpringBootApplication(exclude = { DataRepository.class })

没有成功。当我调用 /beans 端点(由 Spring Boot 执行器提供)时,我总是看到

{
    bean: "dataRepository",
    aliases: [ ],
    scope: "singleton",
    type: "org.codefromhell.test.repoloading.DataRepository",
    ...
},
{
    bean: "dataApiRepository",
    aliases: [ ],
    scope: "singleton",
    type: "org.codefromhell.test.repoloading.api.DataApiRepository",
    ...
},

您可以使用org.springframework.data.repository.NoRepositoryBean https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/repository/NoRepositoryBean.html您的存储库界面上的注释。 来自文档:

用于排除存储库接口被拾取的注释,从而避免创建实例。

这通常在为所有存储库提供扩展基接口并结合自定义存储库基类来实现该中间接口中声明的方法时使用。在这种情况下,您通常从中间接口派生具体的存储库接口,但不想为中间接口创建 Spring bean。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring Data Rest 时如何从组件扫描中排除 @Repository 的相关文章

随机推荐

  • 右 |如何按自定义顺序排列 df 列的字符向量?

    我有一个如下所示的数据框 Fruit X Y Z apple banana orange papaya a f k banana orange grape b g l orange banana c h m grape d i n bana
  • 从 python 脚本解锁 Windows 中的文件

    我可以在 windows 7 中取消阻止 Windows 从 Internet 下载 自动阻止的文件吗 遇到此类文件时会引发 WindowsError 我想捕获这个异常 并运行一个 powershell 脚本 如下所示 Parameter
  • 带有 topojson 的脆边?

    Mike Bostock 分享了一系列全球范围内的 topojson 文件 由于我想要更多数据和更高质量 我现在从 Natural Earth 生成自己的高质量 topojson 文件 为了简单起见 我的 makefile 命令是这样的 a
  • Spring MVC 捕获 http 错误(400.404,....)

    下午好 几天来一直在为这个问题苦苦挣扎 我想帮助 Spring beans 解析器 捕获应用程序中的所有错误 几乎立即捕获异常 但捕获 http 错误不会被处理 问题解决的本质是无法拦截http错误 我不想使用web xml和控制器 因为我
  • 如何在keras转换层中进行零填充?

    我正在尝试实现科学文章中的模型 该文章说他们正在使用零填充 是否可以在中配置此填充keras Conv2D https keras io layers convolutional conv2d 我看到的唯一可能的填充值是 填充 有效 或 相
  • JPA Buddy 逆向工程工具未显示表格

    当我单击 来自数据库的实体 时 它正确连接到数据库 并且成功执行内省 以便我可以从侧面视图看到表列表 但在弹出窗口中我得到 0 个表 0 个视图和 0 个映射关系 0tables https i stack imgur com Gl0Ua
  • Linux 中使用 pipeline() 的链式管道

    我知道如何使用 C 在 Linux 中创建一个管道 如下所示cat tmp txt grep foo 但是我在实现像这样的多个链式管道时遇到问题cat tmp 1 txt uniq c sort 如何使用 C 来做到这一点pipe 在 Li
  • 为什么 PHP 被认为是面向对象的?

    我一直在阅读 OOP 的定义 但不明白为什么 PHP 被认为是面向对象的 这与 PHP 的 基础级别 不具备而更高级的功能却有什么关系吗 在大部分标准库已经创建并且该语言已经建立之后 OO 特性通过版本 3 5 分阶段添加到 PHP 中 背
  • 计算平均值或将 ArrayList 作为函数的参数

    是否有内置方法来计算整数 ArrayList 的平均值 如果没有 我可以创建一个函数 通过获取 ArrayList 的名称并返回其平均值来实现此目的吗 这真的很简单 Better use a List It is more generic
  • php 获取数组的数据大小

    拥有这个数组 Array block1 gt Array list gt Array sub list gt Array links gt Number total gt Number block2 gt Array attributes
  • 如何指定 Android 模拟器应在我的开发计算机上使用哪个网络接口?

    我的开发机器同时连接到两个不同的网络 一种是通过以太网 eth0 另一种是通过 WiFi en1 在这种情况下 Android 模拟器似乎总是想要连接 eth0 上的网络 从命令行启动模拟器时 是否有一个选项可以告诉它使用开发计算机上的特定
  • java中非静态块有什么用? [复制]

    这个问题在这里已经有答案了 可能的重复 实例初始值设定项与构造函数有何不同 https stackoverflow com questions 1355810 how is an instance initializer different
  • 使用捆绑属性增强图形库

    我是 BGL 的新手 尝试使用 BGL 设置一个简单的最短路径查找程序 其中无向图被定义为具有自定义定义的 EdgeProperty 和 VertexProperty 的邻接列表 我收到编译时错误 我将其归因于我在模板和 Boost 方面的
  • spring data jpa @query 和可分页

    我正在使用 Spring Data JPA 当我使用 Queryto 定义查询WITHOUT Pageable 有用 public interface UrnMappingRepository extends JpaRepository
  • 通过instance-id获取实例

    我需要通过实例 ID 获取实例 是否可以在不请求所有实例的列表的情况下完成此操作 我试过了 ec2 conn boto connect ec2 aws access key id key aws secret access key acce
  • 如何提高winform的加载时间?

    我有一个 WinForms 应用程序 主窗体有很多控件 这也是加载速度非常慢的原因之一 我想做的是使表单加载速度更快 我已经设置了beginupdate和endupdate 该表单不会在后台工作线程中呈现 因为这是主表单 没有初始形式 当用
  • 如何控制android中的视频捕获属性?

    我正在使用以下意图捕获视频 Intent takeVideoIntent new Intent MediaStore ACTION VIDEO CAPTURE if takeVideoIntent resolveActivity getPa
  • 允许匿名访问受保护的 Subversion 存储库的部分内容

    我们目前面临的问题是允许人们访问 subversion 存储库的某些部分 1 5 x 很快是 1 6 x 而其他部分是安全的 让我给你一些细节 我们有一个生产服务器 其中许多项目都有自己的颠覆存储库 对于每个项目 我们的 Apache 配置
  • Docker Compose 与多阶段构建

    有了这个新版本 https blog docker com 2017 06 announcing docker 17 06 community edition ce Docker 引入了多阶段构建 至少我以前从未听说过 我现在的问题是 我应
  • 使用 Spring Data Rest 时如何从组件扫描中排除 @Repository

    在 Spring Boot 项目中 我在从组件扫描中排除某些存储库时遇到问题 我有一个包含一些实体和一些存储库 JpaRepositories 的库 由于某种原因 我实现了一个小型 Spring Boot Data Rest 应用程序 用于