【问题标题】:Mapping information from .yml file来自 .yml 文件的映射信息
【发布时间】:2018-01-17 09:19:22
【问题描述】:

我正在尝试映射存储在 application.yml 文件中的以下配置

agents:
    ongo:
        mappings:
            - scopeName: email
              mapping: [mail, test1, test2, test3, test4]
            - scopeName: phoneNumber
              mapping: [phoneNumber, workPhoneNumber, personalPhoneNumber]

我创建了一个名为 AgentConfiguration 的类,它看起来像:

public class AgentConfiguration {

    private Map<String, List<MyClass>> mappings;

    public Map<String, List<MyClass>> getMappings() {
        return mappings;
    }

    public void setMappings(Map<String, List<MyClass>> mappings) {
        this.mappings = mappings;
    }

    public class MyClass {
        private String scopeName;
        private List<String> mapping;

        public String getScopeName() {
            return scopeName;
        }

        public void setScopeName(String scopeName) {
            this.scopeName = scopeName;
        }

        public List<String> getMapping() {
            return mapping;
        }

        public void setMapping(List<String> mapping) {
            this.mapping = mapping;
        }
    }

}

所以,当我运行以下代码时: AgentConfiguration agent = new AgentConfiguration();

然后我评估“agent.getMapptins()”,它看起来像:

但是如果我使用 “地图” 代替 "Map> mappings" 将返回以下代码

那么为什么当我使用 MyClass 时它没有绑定 application.yml 文件中的任何内容?

【问题讨论】:

  • 你能添加你实例化mappings的代码吗?
  • 嘿@jeanr,感谢您的快速回复,但同时我已经想出了如何去做。祝你有美好的一天!

标签: java file yaml


【解决方案1】:

好的,我已经想出办法了。

我已经更改了 AgentConfiguration 类:

public class AgentConfiguration {

    private List<MyClass> mappings;

    public List<MyClass> getMappings() {
        return mappings;
    }

    public void setMappings(List<MyClass> mappings) {
        this.mappings = mappings;
    }

    static public class MyClass{
        private String scopeName;
        private List<String> mapping;

        public AgentConfigScope() {
        }

        public String getScopeName() {
            return scopeName;
        }

        public void setScopeName(String scopeName) {
            this.scopeName = scopeName;
        }

        public List<String> getMapping() {
            return mapping;
        }

        public void setMapping(List<String> mapping) {
            this.mapping = mapping;
        }
    }
}

另外,请记住内部类应该是 static ,一位同事告诉这是由于 Spring 代理限制......或类似的东西。 Spring 中的 AOP 仅适用于公共方法。

祝你有美好的一天!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 2012-06-13
    • 2013-12-18
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多