需求:需要从nacos中获取多层级值,因为我的逻辑里需要将接口接收到的参数用来判断在nacos上存不存在,所以这个不能靠@Value("${param}")来实现,因为此注解只能获取到具体某一层的值,而不能笼统的拿到二层三层下的所有key/value,所以通过代码形式来拿,记录一下,下次有此需求可以直接复制。
我的nacos需要获取的配置,我的第三层有四个值(2006_system1.....),我需要统一获取用来逻辑判断。
首先先自定义一个config类:
prefix="facecode"意思是我要获取facecode层级下的所有配置,你们换成自己的名称(注意这个名称在配置里不能使用驼峰命名,否则在这里会获取不到报错)。
systemMap对象是我要用来获取第四层级的值,因为我的每个三级都有好几层四级。
@RefreshScope加上此注解可以实现自动刷新。
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
import java.util.Map;
@Component
@Data
@RefreshScope
@ConfigurationProperties(prefix = "facecode")
public class CommonMqMsgConfig {
private Map<String,SystemMap> systemMap;
@Data
public static class SystemMap{
private String exchange_name;
private String queue_name;
private String routing_key;
}
}
然后在逻辑层直接将类注入进来获取配置拿到值来做相应的处理即可: