第一种最直接,再 yml 或 properties 配置文件中定义,然后通过 @Value 注入到需要使用的 @Component

    @Value("#{${mqtt.upgrade}}")
    private Map<String, String> mqttUpgrade;

上面的例子是在正常获取配置值 ${} 外面增加了 #{},表示可执行的语句,可以将 JSON 字符串转化为 Map 对象,然后通过 map.get("xx") 获取内部对应的参数。这个对于同一种配置项较多的情况比较有效。

更加正式一点的也可以单独设置一个配置文件,并创建一个配置类,通过 @PropertySource("classpath:filename") 注入到配置类中。

第二种就是从数据库中获取配置参数了。首先定义好对应的 mapper 和 service,然后将 service 注入到需要使用的 @Component

通过获取对应的 entity 属性,获取配置值。对应上面的 JSON 字符串的情况可以先解析再取值。

JSONObject xxConfig = JSON.parseObject(mqttConfig.getValue());
xxConfig.getString("");
xxConfig.getObject("");