java 有没有办法把字符串从YAML解析成类类型?

unhi4e5o  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(176)

我想知道是否有任何方法可以像这样加载YAML配置:

classes:
  a: A.class
  b: B.class

以使得A.classB.class稍后可以被检索为Class类型(类似于Map<String, Class>

更新#1

我正在使用Sping Boot 加载此类中的配置:

@Getter
@Setter
@Configuration
@ConfigurationProperties
public class ClassesConfig {

    private Map<String, Class<?>> classes;

}

我可以做一些类似this的事情,但我实际上不知道如何在保持该类的使用的同时实现它...

tjvv9vkg

tjvv9vkg1#

这应该行得通:

@Component
@ConfigurationPropertiesBinding
public class ClassConverter implements Converter<String, Class<?>> {

    @Override
    public Class<?> convert(String from) {
        return Class.forName(from);
    }
}

根据你的需要调整它;例如,如果要在YAML文件中使用.class后缀,请从字符串from中删除该后缀,因为它不是类名的一部分。
注意你需要给出类的完全限定名,所以如果AB在一个包里,你需要把那个包作为前缀。

相关问题