本站资源收集于互联网,不提供软件存储服务,每天免费更新优质的软件以及学习资源!

从应用程序yml加载对象列表JavaSpringBoot

网络教程 app 1℃

从应用程序yml加载对象列表JavaSpringBoot

php小编西瓜带你深入探讨java中应用程序yml如何加载对象列表的问题。在java spring boot中,通过合理配置yml文件,可以实现对对象列表的加载,并在应用程序中灵活应用。接下来,让我们一起来掌握这一技巧,提升在spring boot开发中的实用性和效率。

问题内容

我有这个配置类:

@configuration@configurationproperties(prefix = "house")public class projectconfig{ private list<housetemplate> templates; // getters and setters}</housetemplate>

housetemplate 类:

public class housetemplate{ private string id; private string description; // getters and setters}

这是我的应用程序-test.yml

house: templates: -id: "colonial"description: "colonial house template" -id: "cottage"description: "cottage house template" -id: "apartment"description: "apartment house template"examplestring: hello

在我的测试类中,我有以下内容:

@runwith(springrunner.class)@enableconfigurationproperties(value = projectconfig.class)@testpropertysource("classpath:application-test.yml")public class yamlapplicationcontextloadingspec { @value("${examplestring}") string example; @autowired projectconfig projectconfig; @test public void exampleshouldcontainhello(){ assertthat(example).isequaltoignoringcase("hello"); } @test public void appcontextcontainshousetemplates(){ list<housetemplate> housetemplates = projectconfig.gettemplates(); assertthat(housetemplates).isnotnull(); }}</housetemplate>

关于 examplestring 的第一个测试通过,而第二个测试没有通过。为什么无法将yml映射到housetemplate列表中?

编辑

<artifactid>spring-core</artifactid><version>4.3.6.RELEASE</version><artifactid>spring-boot</artifactid><version>1.5.1.RELEASE</version><artifactid>junit</artifactid><version>4.12</version>

我知道它们真的很旧,我很想升级,但我不能……这就是我必须处理的。

解决方法

使用@configurationproperties从yml中读取后,可以将其注册为bean,然后可以通过applicationcontext获取。

@configuration@configurationproperties(prefix = "house")public class testconfig { private list<housetemplate> templates; @bean public list<housetemplate> templates() { return templates; } // getter and setter}@restcontroller@requestmapping("/api/test")public class testcontroller { @autowired private applicationcontext applicationcontext; @getmapping("get") @suppresswarnings("unchecked") public list<housetemplate> get() { return (list<housetemplate>) applicationcontext.getbean("templates"); }}</housetemplate></housetemplate></housetemplate></housetemplate>

如果你不想注册为bean,也可以将变量声明为静态。

这是一个示例。

@Configuration@ConfigurationProperties(prefix = "House")public class TestConfig { private static List<housetemplate> templates; public static List<housetemplate> get() { return templates; } public List<housetemplate> getTemplates() { return templates; } public void setTemplates(List<housetemplate> templates) { TestConfig.templates = templates; }}@RestController@RequestMapping("/api/test")public class TestController { @GetMapping("get") public List<housetemplate> get() { return TestConfig.get(); }}</housetemplate></housetemplate></housetemplate></housetemplate></housetemplate>

以上就是从应用程序 yml 加载对象列表 Java Spring Boot的详细内容,更多请关注范的资源库其它相关文章!

转载请注明:范的资源库 » 从应用程序yml加载对象列表JavaSpringBoot

喜欢 (0)