Editor PHP Xigua akan membawa anda menyelidiki isu cara memuatkan senarai objek dalam yml aplikasi dalam Java. Dalam Java Spring Boot, dengan mengkonfigurasi fail yml dengan betul, anda boleh memuatkan senarai objek dan menggunakannya secara fleksibel dalam aplikasi. Seterusnya, marilah kita menguasai teknik ini bersama-sama untuk meningkatkan kepraktisan dan kecekapan dalam pembangunan Spring Boot.
Saya mempunyai kelas konfigurasi ini:
@configuration @configurationproperties(prefix = "house") public class projectconfig{ private list<housetemplate> templates; // getters and setters }
kelas housetemplate:
public class housetemplate{ private string id; private string description; // getters and setters }
Ini adalah ujian permohonan saya.yml
house: templates: - id: "colonial" description: "colonial house template" - id: "cottage" description: "cottage house template" - id: "apartment" description: "apartment house template" examplestring: hello
Dalam kelas ujian saya, saya mempunyai perkara berikut:
@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(); } }
Ujian pertama untuk examplestring lulus, tetapi ujian kedua tidak. Mengapa saya tidak boleh memetakan yml ke dalam senarai templat rumah?
Edit
<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>
Saya tahu mereka benar-benar sudah tua dan saya ingin menaik taraf tetapi saya tidak boleh...ini yang perlu saya hadapi.
Gunakan @configurationproperties
从yml中读取后,可以将其注册为bean,然后可以通过applicationcontext
untuk mendapatkannya.
@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"); } }
Jika anda tidak mahu mendaftar sebagai kacang, anda juga boleh mengisytiharkan pembolehubah sebagai statik.
Berikut adalah contohnya.
@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(); } }
Atas ialah kandungan terperinci Muatkan senarai objek daripada aplikasi yml Java Spring Boot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!