gpt4 book ai didi

java - 如何 Autowiring 需要方法引用作为其依赖项之一的 bean

转载 作者:行者123 更新时间:2023-12-02 10:59:44 24 4
gpt4 key购买 nike

我有一个类 CustomMap 如下:

@Component
public class CustomMap<T extends Map<String, Object>> {
private final Supplier<T> mapType;

/**
* @param mapType Lambda for creating new instances of map type
*/
public CustomMap(Supplier<T> mapType) {
this.mapType = mapType;
}
}

我有另一个类依赖于上面的 CustomMap 类:

@Component
public class A {
private final CustomMap<MySupplier> customMap;

public A(CustomMap<MySupplier> customMap) {
this.customMap = customMap;
}
}

public class MySupplier extends HashMap<String, Object> {
public MySupplier() {
}
}

我必须以某种方式将这两个类自动连接在一起,以便 spring 负责初始化。我必须手动初始化类 A,如下所示,我希望 spring 能够处理它。

A a = new A(new CustomMap<> (MySupplier::new))

最佳答案

我建议在 ApplicationConfig 中为 A 创建一个 bean。例如:

@Configuration
public class ApplicationConfig {
@Bean
public A a() {
return new A(new CustomMap<> (MySupplier::new));
}
}

您可能正在使用组件扫描,因此您应该删除 @Component 注释,因为该 bean 现在是在 ApplicationConfig 中创建的。

关于java - 如何 Autowiring 需要方法引用作为其依赖项之一的 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51425026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com