首页 > 解决方案 > SpringBoot JPA 存储库 bean 命名策略

问题描述

我正在开发一个更大的 Spring Boot 应用程序,其中重复的类名在不同的域中是不可避免的(因此它们通过属于这些业务域的包来区分)。这个 ofc 会导致重复的 bean,这是使用SpringApplicationBuilder.beanNameGeneratormain 方法解决的。自然地像魅力一样工作。

但它不起作用的地方是集成测试(@SpringBootTest& @DataJpaTest),这也是可以理解的,因为它们没有使用 main 方法来实例化测试及其上下文。

一个简单的解决方案将一直使用@ComponentScan#nameGenerator或者@SpringBootApplicaiton#nameGenerator因为来自这些注释的配置反映在测试配置中。除此之外,这些名称生成器不适用于 JPA 存储库(如果您愿意,也不会应用到它们生成的 bean)。虽然应用了名称生成器,因为除了冲突的 JPA 存储库名称之外,我还有几个冲突的 REST 控制器名称,并且当使用注释配置方法时,它不会在这些处启动失败,而是在 JPA 存储库中失败。

我的问题是,我是否正在查看所需的行为,就命名而言,JPA 存储库的处理方式是否不同?或者是某种不当行为,我应该提出问题吗?我还没有发现任何关于这件事的信息,但似乎还不太可能还没有被发现。

标签: javaspringspring-bootspring-data-jpa

解决方案


推荐阅读