java - SpringBoot JPA 存储库 bean 命名策略
问题描述
我正在开发一个更大的 Spring Boot 应用程序,其中重复的类名在不同的域中是不可避免的(因此它们通过属于这些业务域的包来区分)。这个 ofc 会导致重复的 bean,这是使用SpringApplicationBuilder.beanNameGenerator
main 方法解决的。自然地像魅力一样工作。
但它不起作用的地方是集成测试(@SpringBootTest
& @DataJpaTest
),这也是可以理解的,因为它们没有使用 main 方法来实例化测试及其上下文。
一个简单的解决方案将一直使用@ComponentScan#nameGenerator
或者@SpringBootApplicaiton#nameGenerator
因为来自这些注释的配置反映在测试配置中。除此之外,这些名称生成器不适用于 JPA 存储库(如果您愿意,也不会应用到它们生成的 bean)。虽然应用了名称生成器,因为除了冲突的 JPA 存储库名称之外,我还有几个冲突的 REST 控制器名称,并且当使用注释配置方法时,它不会在这些处启动失败,而是在 JPA 存储库中失败。
我的问题是,我是否正在查看所需的行为,就命名而言,JPA 存储库的处理方式是否不同?或者是某种不当行为,我应该提出问题吗?我还没有发现任何关于这件事的信息,但似乎还不太可能还没有被发现。
解决方案
推荐阅读
- java - 如何修复“原始错误:“命令”以代码 1 退出”;标准错误:''; 代码:'1''
- azure - 用于更新 Azure 中标签的 PowerShell 脚本
- laravel - Laravel 包安装 “包”命名空间中没有定义命令
- php - 从两个表中获取数据时,我怎样才能使它不重复相同的结果?
- g1ant - mouse.click 命令循环工作?
- c++ - boost::asio::deadline_timer cancel() 方法没有调用定时器处理程序
- typescript - serviceWorker 找不到全局变量
- excel - 在excel中提取姓名
- python - 1个熊猫数据框中的时间序列条件滚动平均值
- amazon-web-services - 如何在无服务器中将 aws 堆栈名称与其他字符串连接起来?