Spring boot解析yaml配置

问题描述 投票:0回答:1

我需要使用 Spring Boot 以 Map> 格式解析 yaml 中的配置,但在 Spring Boot 手册或特定示例中找不到。我需要 impl.这种类型的解析的特定解析器?

我的yaml文件:

stateMachine :
  allowedActions:
          EMPTY:
           -
             action : 'ADD'
             nextState : 'DRAFT'
           -
             action : 'ADD2'
             nextState : 'ADD2'
          DRAFT:
          -
             action : 'TEST'
             nextState : 'TEST'

这是我的配置加载器:

@EnableConfigurationProperties
@ConfigurationProperties(prefix = "stateMachine")
public class StateMachineConfig  {


  private Map<String,List<ActionHolder>> allowedActions = new HashMap<>();




  public Set<String> getInitialStates() {
    return allowedActions.keySet();
  }




  public Map<String, List<ActionHolder>> getStateTransitions() {
    return this.allowedActions;
  }


  public void setStateTransitions(Map<String, List<ActionHolder>> stateTransitions) {
      this.allowedActions = stateTransitions;
  }
}


public class ActionHolder implements IActionHolder {


  private String action;

  private String nextState;

  @Override
  public String getAction() {
    return action;
  }

  @Override
  public void setAction(String action) {
    this.action = action;
  }

  public String getNextState() {
    return nextState;
  }

  @Override
  public void setNextState(String nextState) {
    this.nextState = nextState;
  }
}

如果要使用外部库。也是我的最后一个选择,所以我的问题是,如果 value 是另一个没有 impl 的集合,是否可以从 yaml 解析映射。自定义解析器?谢谢。

java spring spring-boot configuration yaml
1个回答
0
投票

将 getter/setter 名称从

getStateTransitions()
setStateTransitions()
更改为标准 getter/setter(
getAllowedActions()
setAllowedActions()
)。

spring 使用 get/setter 来映射每个配置和环境(

yml
properties
xml
),这将起作用。

© www.soinside.com 2019 - 2024. All rights reserved.