首页 > 解决方案 > 从 Spring Boot 中的 application.properties 读取泛型类型

问题描述

我在 application.properties 文件中有以下格式的地图

# map element 1
app.mymap.mykey1.myobject1.myvariable1 = 7.144
app.mymap.mykey1.myobject1.myvariable2 = 4
app.mymap.mykey1.myobject2.myvariable3 = somestr

# map element 2
app.mymap.mykey2.myobject1.myvariable1 = 1.22
app.mymap.mykey2.myobject1.myvariable2 = 5
app.mymap.mykey2.myobject2.myvariable3 = someotherstr

这是 Java 中的配置属性读取部分:

@Component
@ConfigurationProperties(prefix = "app")
public class AppProperty {

    private Map<String, MyObject> mymap = new HashMap<>();

    public Map<String, MyObject> getMymap() {
        return mymap ;
    }
}

我的问题是:我在 MyObject 类中有一个通用变量。所以我需要定义 MyObject 并解析类型 T 的特定设置。(因为某些类型有额外的设置)

public class MyObject<T> {

    private MyObject1<T> myobject1; // THAT'S PROBLEMATIC PART
    private MyObject2 myobject2;

如何使用泛型类型来实现这一点?还是我应该彻底改变我的设计?(比如使用 MyInterface 而不是 MyObject 并尽可能将 application.properties 读入该接口)

标签: javaspringspring-bootparsing

解决方案


推荐阅读