java - 将自定义服务注入 Spring Boot 测试
问题描述
我有一个接口I和 2+ 的实现/服务(例如I1,I2)
public interface I {
void handle();
Network getNetwork();
}
我还有另一个服务(例如IHolder),它正在注入实现I的所有服务的列表,并将其放入其内部私有映射字段,其中键是一些唯一的 Enum (接口具有返回一个的公共方法)并重视实施本身。
public class IHolder {
private final Map<Network, I> iByNetwork = new HashMap<>();
public IHolder(List<I> is) {
for (I i : is) {
register(i.getNetwork(), i);
}
}
private void register(Network network, I i) {
this.iByNetwork.put(network, i);
}
public I getI(Network network) {
return iByNetwork.get(network);
}
}
现在我想将IHolder注入到我的测试类中,以使用他填充了这些服务的地图
解决方案
所以基本上用 注释IHolder
类@Service
,但你将无法使用它的private
字段(地图),至少不是以简单的方式......
编辑 尝试将这些注释添加到您的测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
推荐阅读
- database - 在一个查询中获取结构和其他数据
- javascript - 我正在使用 promise.all() 来获取具有不同参数的 url,但它返回一个未定义的数组
- p5.js - 执行时如何找到内置命令所遵循的逐行指令
- unity3d - 我想让我的武器跟随光标但在一个圆圈的范围内请帮助p || unity2d
- python - 识别 pandas read_sql 中的日期类型
- flutter - 在 Flutter for iOS 和 Android 中检查设备音量?
- amazon-cloudwatchlogs - Cloudwatch 记录“AND NOT”搜索
- spring - 注册后Spring Boot自动登录不起作用
- android - 工具栏 SearchView 不可聚焦
- python - 有没有类似 Jupyter 但不能在浏览器上运行的软件