Tambah kebergantungan
Mula-mula kita perlu menambah kebergantungan Spring Boot:
Contoh mudah
@ConfigurationProperties perlu digunakan bersama dengan @Configuration Kami biasanya mengkonfigurasinya dalam POJO:
@Data@Configuration@ConfigurationProperties(prefix = "mel") kelas awam. ConfigProperties { private String hostName; private int port; 🎜>#Simple propertiesmail.hostname=host@mail.commail.port=9000mail.from=mailer@mail.com
Padanan nama sifat Spring menyokong banyak format Seperti yang ditunjukkan di bawah, semua format boleh dipadankan dengan nama hos . Padanan:
mail.hostNamemail.hostnamemail.host_namemail.host-namemail.HOST_NAME
Jika anda tidak mahu menggunakan @Configuration, anda perlu mengimport fail konfigurasi secara manual dalam @ EnableConfigurationProperties anotasi seperti berikut:
@SpringBootApplication@EnableConfigurationProperties(ConfigProperties.class)kelas awam ConfigPropApp { public static void main(String[] args) { SpringApplication.run(ConfigPropApp.}; >
Kami juga boleh Tentukan laluan ke fail Config dalam @ConfigurationPropertiesScan: @SpringBootApplication@ConfigurationPropertiesScan("com.flydean.config") kelas awam ConfigPropApp { public static void main(String[] args ) { SpringApplication.run(ConfigPropApp. class,args); }}Dalam kes ini, program hanya akan mencari fail konfigurasi dalam pakej com.flydean.config.Sarang atribut
Kita boleh sarang kelas, senarai, peta Mari kita ambil contoh di bawah dan buat POJO biasa dahulu:Kelas @Datapublic. Bukti kelayakan { private String authMethod; private String username; private String password;}
Kemudian buat fail konfigurasi bersarang: @Data@Configuration@ConfigurationProperties(prefix = "nestmail ")kelas awam NestConfigProperties { private String port; private String daripada; ># sarang Simple propertiesnestmail.hostname=mailer@mail.comnestmail.port=9000nestmail.from=mailer@mail.com#List propertiesnestmail.defaultRecipients[0]=admin@mail.comnestmail.defaultRecipients[1] =owner@ mail.com#Map Propertiesnestmail.additionalHeaders.redelivery=trueenestmail.additionalHeaders.secure=true#Object propertiesnestmail.credentials.username=johnnestmail.credentials.password=passwordnestmail.credentials.authMethod=SHA1
Configuration@SHA1 @ConfigurationProperties juga boleh digunakan dengan @Bean seperti berikut: @Datapublic class Item { private String name;} Lihat cara menggunakannya:@Data@Configurationpublic class BeanConfigProperties { @Bean @ConfigurationProperties(prefix = "item") public Item item() { return new Item( }}
Pengesahan Harta
@ConfigurationProperties boleh menggunakan format JSR-303 standard untuk pengesahan harta. Mari kita ambil contoh: @Data@Validated@Configuration@ConfigurationProperties(prefix = "mail") kelas awam ConfigProperties { @NotEmpty private String hostName; @Pattern(regexp = "^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,6}$") Rentetan peribadi daripada;}Jika hartanah kami tidak memenuhi syarat rayuan, pengecualian berikut mungkin berlaku:Mengikat pada sasaran org.springframework.boot.context.properties.bind.BindException: Gagal mengikat sifat di bawah ' mail' ke com.flydean.config.ConfigProperties$$EnhancerBySpringCGLIB$$f0f87cb9 gagal: Harta: mail.port Nilai: 0 Sebab: Nilai minimum tidak boleh kurang daripada 1025 Harta: mail.hostName Nilai: null Sebab: Ia tidak boleh kosong Tindakan:Kemas kini konfigurasi aplikasi andaProses selesai dengan kod keluar 1
Penukaran atribut
@ConfigurationProperties juga menyokong penukaran atribut berbilang Di bawah kami mengambil Tempoh dan Saiz Data sebagai contoh: Kami menentukan medan Dua Tempoh: @ConfigurationProperties(prefix = "conversion") kelas awam PropertyConversion { private Duration timeInDefaultUnit; private Duration timeInNano; dalam medan fail sifat:conversion.timeInDefaultUnit=10conversion.timeInNano=9ns
Kami melihat bahawa atribut di atas boleh mempunyai unit. Unit pilihan ialah: ns, us, ms, s, m, h dan d, masing-masing sepadan dengan nanosaat, mikrosaat, milisaat, saat, minit, jam dan hari. Unit lalai ialah milisaat. Kami juga boleh menentukan unit dalam anotasi:
@DurationUnit(ChronoUnit.DAYS)private Duration timeInDays;
Fail konfigurasi yang sepadan adalah seperti berikut:
conversion.timeInDays =2
Mari kita lihat cara menggunakan DataSize:
private DataSize sizeInDefaultUnit; private DataSize sizeInGB; @DataSizeUnit(DataUnit.TERABYTES)private DataSize sizeInTB;
conversion.sizeInDefaultUnit=300conversion.sizeInGB=2GBconversion.sizeInTB=4
Datasize menyokong B, KB, MB, GB dan TB.
Penukar TersuaiBut Musim Bunga yang sama turut menyokong penukar atribut tersuai. Kami mula-mula mentakrifkan kelas POJO:
Pekerja kelas awam { private String name;
Fail harta yang sepadan:
conversion.employee=john,2000
Kami perlu melaksanakan sendiri kelas penukaran antara muka Penukar:
@Component@ConfigurationPropertiesBindingpublic class EmployeeConverter melaksanakan Converter
Atas ialah kandungan terperinci Bagaimana untuk menggunakan @ConfigurationProperties dalam SpringBoot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!