为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

牧羊人nacy 2022-06-04 17:41:52
我刚刚使用 Spring 初始化程序创建了一个非常基本的 Spring Boot 应用程序,并且正在尝试。我想从 yaml 配置文件中加载一个列表,但它总是返回空。我有一个自定义配置类@ConfigurationProperties("example-unit")@EnableConfigurationPropertiespublic class ConfigurationUnit {    public List<String> confiList = new ArrayList<>();    public List<String> getConfiList() {        return this.confiList;    }}我的主要课程看起来像这样@SpringBootApplicationpublic 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我在这里和在线搜索,但无法弄清楚问题出在哪里,我所做的任何更改都没有帮助。我知道我一定做错了什么。
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

这个说法是错误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() {

    return this.confiList;

    }


 }

DemoApplication在 spring boot main 中从 applicationcontext 获取 bean 并从中获取列表对象


@SpringBootApplication

public class DemoApplication {


public static void main(String[] args) {


    ApplicationContext context = SpringApplication.run(DemoApplication.class, args);

     ConfigurationUnit unit = context.getBean("configurationUnit"):


    System.out.print(unit. getConfiList());

   }


}


查看完整回答
反对 回复 2022-06-04
?
智慧大石

TA贡献1946条经验 获得超3个赞

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

应用程序类应该有 @EnableConfigurationProperties 注释



查看完整回答
反对 回复 2022-06-04
?
GCT1015

TA贡献1827条经验 获得超4个赞

这是有关Spring Bboot 配置绑定如何工作的参考。


专门针对您的问题,这是实现您的目标的应用程序示例:


应用程序.yml

example-unit:

  confiList:

    - string1

    - string2

    - hello22

来源

@SpringBootApplication

@EnableConfigurationProperties(ConfigurationUnit.class)

public class DemoApplication {


    public static void main(String[] args) {

        ConfigurableApplicationContext context = SpringApplication.run(DemoApplication.class, args);

        ConfigurationUnit configurationUnit = context.getBean(ConfigurationUnit.class);

        System.out.println(configurationUnit.getConfiList());

    }


}


@ConfigurationProperties("example-unit")

public class ConfigurationUnit {


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


    public List<String> getConfiList() {

        return this.confiList;

    }


}


查看完整回答
反对 回复 2022-06-04
  • 3 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信