gpt4 book ai didi

initialization - Spring Boot - 从 application.yml 注入(inject) map

转载 作者:行者123 更新时间:2023-12-03 14:34:38 26 4
gpt4 key购买 nike

我在 J2SE 应用程序中使用 spring boot。

我有一些常量数据,比如一张 map ,表示一个HandlerClass处理一种操作类型。

映射关系没有改变,所以我想在 application.yml 中配置它

我试试这个:

info:
modify_nodeip: omm.task.impl.ModifyNodeIpHandler

但是 map 只能识别为 Map<String,String> , 如何将 map 注入(inject)为 Map<Enum,Class> ?

谢谢!

更新:
我遵循@cfrick 指令,但它不起作用。

应用程序.yml
config:
optHandlerMap:
modify_oms_nodeip: 'omm.task.opthandler.impl.ModifyOMSNodeIpHandler'

测试配置:
@Configuration
@ConfigurationProperties(prefix = "config")
public class TestConfiguration
{

Map<OperationType,OptHandler> optHandlerMap; // here we store the handlers, same name in yaml
TestConfiguration() {}

}

并且主要功能使用了配置
@Autowired
private TestConfiguration testConfiguration;

那有什么问题?但是不行, optHandlerMaptestConfiguration一片空白。

最佳答案

你可以玩这样的把戏:

在您的 TestConfiguration , 定义一个 Map<String,String> , 和 setter/getter 。

然后提供 Map<Operator,Handler> getXXXX()函数,在这个函数中,转换Map<String,String>Map<Operator,Handler> .

也许您需要使用反射来新建一个实例。

顺便说一句,您可以使用Maps.transform()在 Guava 中执行转换。

关于initialization - Spring Boot - 从 application.yml 注入(inject) map<Enum,Class>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580948/

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