Spring Boot 从配置文件加载列表返回空列表

我刚刚使用 Spring 初始化程序创建了一个非常基本的 Spring Boot 应用程序,并且正在尝试。我想从 yaml 配置文件中加载一个列表,但它总是返回空。


我有一个自定义配置类


@ConfigurationProperties("example-unit")

@EnableConfigurationProperties

public class ConfigurationUnit {


    public List<String> confiList = new ArrayList<>();


    public List<String> getConfiList() {

        return this.confiList;

    }


}

我的主要课程看起来像这样


@SpringBootApplication

public class DemoApplication {


    static ConfigurationUnit configurationUnit = new ConfigurationUnit();



    public static void main(String[] args) {


        SpringApplication.run(DemoApplication.class, args);


        List<String> hello = configurationUnit.getConfiList();


        System.out.print("");

    }


}

我已将 application.yaml 放入资源文件夹。


example-unit:

  - string1

  - string2

  - hello22

我在这里和在线搜索,但无法弄清楚问题出在哪里,我所做的任何更改都没有帮助。我知道我一定做错了什么。


牧羊人nacy
浏览 175回答 3
3回答

qq_花开花谢_0

这个说法是错误static ConfigurationUnit configurationUnit = new ConfigurationUnit(); 的 你不应该创建对象Spring 仅将属性注入到由应用程序上下文处理的 bean 中,并且 spring 创建带有注释的类的 bean@ Configuration配置单元@Configuration@ConfigurationProperties("example-unit")public class ConfigurationUnit {public List<String> confiList;public List<String> getConfiList() {&nbsp; &nbsp; return this.confiList;&nbsp; &nbsp; }&nbsp;}DemoApplication在 spring boot main 中从 applicationcontext 获取 bean 并从中获取列表对象@SpringBootApplicationpublic class DemoApplication {public static void main(String[] args) {&nbsp; &nbsp; ApplicationContext context = SpringApplication.run(DemoApplication.class, args);&nbsp; &nbsp; &nbsp;ConfigurationUnit unit = context.getBean("configurationUnit"):&nbsp; &nbsp; System.out.print(unit. getConfiList());&nbsp; &nbsp;}}

智慧大石

将您的列表放在prefix.property下。在你的情况下example-unit.confi-list:。通常为您的属性提供一个设置器:setConfiList(List<String> strings).&nbsp;但是由于您已经将它初始化为空数组列表,所以这个 setter 已经过时了。还有建议将 Enable-annotation 添加到 Application 类:应用程序类应该有 @EnableConfigurationProperties 注释

GCT1015

这是有关Spring Bboot 配置绑定如何工作的参考。专门针对您的问题,这是实现您的目标的应用程序示例:应用程序.ymlexample-unit:&nbsp; confiList:&nbsp; &nbsp; - string1&nbsp; &nbsp; - string2&nbsp; &nbsp; - hello22来源@SpringBootApplication@EnableConfigurationProperties(ConfigurationUnit.class)public class DemoApplication {&nbsp; &nbsp; public static void main(String[] args) {&nbsp; &nbsp; &nbsp; &nbsp; ConfigurableApplicationContext context = SpringApplication.run(DemoApplication.class, args);&nbsp; &nbsp; &nbsp; &nbsp; ConfigurationUnit configurationUnit = context.getBean(ConfigurationUnit.class);&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(configurationUnit.getConfiList());&nbsp; &nbsp; }}@ConfigurationProperties("example-unit")public class ConfigurationUnit {&nbsp; &nbsp; public List<String> confiList = new ArrayList<>();&nbsp; &nbsp; public List<String> getConfiList() {&nbsp; &nbsp; &nbsp; &nbsp; return this.confiList;&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java