我需要使用 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 解析映射。自定义解析器?谢谢。
将 getter/setter 名称从
getStateTransitions()
和 setStateTransitions()
更改为标准 getter/setter(getAllowedActions()
和 setAllowedActions()
)。
spring 使用 get/setter 来映射每个配置和环境(
yml
、properties
、xml
),这将起作用。