java - 有没有办法防止 Spring 中的配置依赖注入?
问题描述
我正在开发一个 Spring 项目,其中单元测试有自己的配置,称为 UnitTestConfig,其中定义了几个类似于主应用程序文件(几乎是副本)的 bean。保持结构完整,我正在对主应用程序服务器代码进行一些更改,但这会在 UnitTestConfig 中引发错误,因为它没有注入所需的 bean。这些 bean 不在单元测试中使用,有没有办法阻止 UnitTestConfig 尝试注入它们?这是一个很大的级联效应,因为 A 注入,B 注入 C,依此类推,它期待所有这些 Bean。有什么方法可以告诉 Spring config 我不想注入这些 bean 或将它们设置为 null 吗?
@Configuration
public class UnitTestConfig {
@Inject
private Environment env;
@Bean
public A a() {
return new A();
}
为了在需要时不注入 A 的字段,我在该字段上添加了一个 @Lazy,它似乎可以工作,但我希望对此进行任何修改都在测试配置方面,而不是修改主应用程序代码只是为了修复测试问题。有什么建议么?
解决方案
这称为循环 bean 依赖。有很多方法可以解决这个问题。在构造函数参数中使用 @Lazy 进行注释。而不是构造函数注入器使用setter注入或在application.properties文件中写入spring.main.allow-bean-definition-overriding=true
推荐阅读
- python - SVG 质量极差 [kivy]
- python - Dynamodb 扫描分页没有按我的预期工作
- r - 计算在R中存储为字符的变量
- django - 你能在 DRF ModelViewSet 中获取请求方法吗?
- sql - 选择每组前 1 名并转换
- c# - 如何检查列表中的所有项目是否为空字符串或空值,如果为真,则执行 asp.net
- pytest - 有没有办法从 pytest.ini 文件配置 pytest_plugins ?
- regex - 正则表达式所有格匹配字符串末尾的零个或一个字符
- c++ - 根据每行中所有正偶数元素的总和对二维数组的行进行升序C++
- r - 使用 R 为 cophylo 树中的颜色提示标签