Rumah > Java > Muatkan senarai objek daripada aplikasi yml Java Spring Boot

Muatkan senarai objek daripada aplikasi yml Java Spring Boot

WBOY
Lepaskan: 2024-02-22 13:16:05
ke hadapan
1163 orang telah melayarinya

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.

Kandungan soalan

Saya mempunyai kelas konfigurasi ini:

@configuration
@configurationproperties(prefix = "house")
public class projectconfig{

    private list<housetemplate> templates;

    // getters and setters
}
Salin selepas log masuk

kelas housetemplate:

public class housetemplate{

    private string id;
    private string description;

    // getters and setters
}
Salin selepas log masuk

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
Salin selepas log masuk

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();
    }
}
Salin selepas log masuk

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>
Salin selepas log masuk

Saya tahu mereka benar-benar sudah tua dan saya ingin menaik taraf tetapi saya tidak boleh...ini yang perlu saya hadapi.

Penyelesaian

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");
    }
}
Salin selepas log masuk

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();
    }
}
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan