如何对已存储数据的类使用 Spring 依赖注入?

问题描述 投票:0回答:0

我有一个存储数据的类,需要访问外部服务。我如何配置这个类,以便我可以用数据实例化它,同时仍然允许在测试中注入模拟服务的能力?

@Service
@Scope("prototype")
final class Adapter {
    @Autowired private AdapterService adapterService;
    private final Options s;

    @Autowired
    Adapter(@NotNull Options options) {
        this.options = options;
    }
}
@Test
void adapter() {
    // How do I inject mock(AdapterService.class)?
    Adapter adapter = applicationContext.getBean(Adapter.class, options);
}

我玩过的一些变通方法:

  1. TestOnly 构造函数
  2. TestOnly Setter 覆盖 adapterService
  3. 通过反射设置 adapterService 属性

请告诉我这些不是唯一的选择,Spring 为这种常见用例提供支持!

java spring dependencies code-injection inversion
© www.soinside.com 2019 - 2024. All rights reserved.