1. Gambaran keseluruhan
Semasa kami menyuntik sifat runtime ke aplikasi Spring kami, kami mungkin menentukan kelas kacang untuk kumpulan sifat tersuai.
IntelliJ memberikan bantuan dan auto-lengkap untuk kacang sifat terbina dalam. Walau bagaimanapun, ia memerlukan sedikit bantuan untuk menyediakannya untuk harta tanah khusus.
Dalam tutorial ringkas ini, kita akan melihat bagaimana untuk mendedahkan sifat-sifat ini kepada IntelliJ agar proses pembangunan lebih mudah.
2. Sifat Tersuai
Mari lihat bantuan di layar yang dapat diberikan oleh IntelliJ mengenai sifat aplikasi kami:

Di sini, url sifat dan masa tamat dalam milisaat adalah sifat tersuai. Kita dapat melihat keterangan, jenis, dan nilai lalai pilihan.
Tetapi, jika harta tanah tidak diketahui, IntelliJ akan menunjukkan amaran kepada kami:

Ini kerana, tanpa metadata, IntelliJ tidak dapat menolong kami.
Sekarang mari kita lihat apa yang harus kita lakukan untuk memperbaikinya.
3. Kebergantungan
Pertama, kita perlu menambahkan kebergantungan pemproses-boot-konfigurasi-pemproses ke pom.xml kami :
org.springframework.boot spring-boot-configuration-processor true
The bunga-boot-konfigurasi pemproses dipergunakan setiap kali kita membina projek kami . Ia akan membuat fail metadata dalam t arget / class / META-INF /.
Ketergantungan ditandai sebagai pilihan, yang bermaksud bahawa ia tidak diwarisi apabila seseorang menggunakan projek kami sebagai pergantungan.
Seterusnya, kita akan melihat di mana pemproses-boot-konfigurasi-pemproses mendapat maklumat yang digunakan untuk membuat metadata.
4. Metadata Konfigurasi dengan @ConfigurationProperties
Kami menentukan harta tanah kami dalam kelas yang dijelaskan dengan @ConfigurationProperties :
@Configuration @ConfigurationProperties(prefix = "com.baeldung") public class CustomProperties { /** * The url to connect to. */ String url; /** * The time to wait for the connection. */ private int timeoutInMilliSeconds = 1000; // Getters and Setters }
Di sini, kelas mengandungi nama harta tanah, jenisnya, dan sebarang lalai yang disediakan dalam senarai pemula. Juga, Javadoc memberikan keterangan setiap harta tanah.
Semasa membina, pemproses anotasi mencari semua kelas yang diberi anotasi dengan @ConfigurationProperties. Ia menghasilkan metadata harta tersuai untuk setiap pemboleh ubah instance kelas.
5. Fail Metadata Konfigurasi
5.1. Format Fail Metadata
Fail metadata yang menerangkan sifat khusus mendorong bantuan kontekstual di IntelliJ, misalnya:
{ "groups": [ { "name": "com.baeldung", "type": "com.baeldung.configuration.processor.CustomProperties", "sourceType": "com.baeldung.configuration.processor.CustomProperties" } ], "properties": [ { "name": "com.baeldung.url", "type": "java.lang.String", "description": "The url to connect to.", "sourceType": "com.baeldung.configuration.processor.CustomProperties" }, { "name": "com.baeldung.timeout-in-milli-seconds", "type": "java.lang.Integer", "description": "The time to wait for the connection.", "sourceType": "com.baeldung.configuration.processor.CustomProperties", "defaultValue": 1000 } ], "hints": [] }
Oleh kerana pemproses anotasi menghasilkan fail ini untuk kami dari kod kami, tidak perlu melihat atau mengedit fail ini secara langsung .
5.2. Metadata Tanpa KonfigurasiProperties Bean
Sekiranya kita mempunyai sifat yang ada yang tidak diperkenalkan oleh @ConfigurationProperties , tetapi masih mahukan fail metadata mereka, maka IntelliJ dapat membantu.
Mari kita perhatikan lebih dekat mesej amaran dari sebelumnya:

Di sini kita melihat pilihan Tentukan konfigurasi kunci , yang dapat kita gunakan untuk membuat fail tambahan-spring-konfigurasi-metadata.json . Fail yang dibuat akan kelihatan seperti:
{ "properties": [ { "name": "com.baeldung.timeoutInMilliSeconds", "type": "java.lang.String", "description": "Description for com.baeldung.timeoutInMilliSeconds." } ] }
Oleh kerana tidak ada maklumat mengenai harta itu dari tempat lain, kami harus mengedit metadata di dalamnya secara manual. Jenis lalai adalah alway s String .
Mari masukkan beberapa maklumat tambahan ke dalam fail:
{ "properties": [ { "name": "com.baeldung.timeout-in-milli-seconds", "type": "java.lang.Integer", "description": "The time to wait for the connection.", "sourceType": "com.baeldung.configuration.processor.CustomProperties", "defaultValue": 1000 } ] }
Perhatikan bahawa kita perlu membina semula projek untuk melihat harta baru muncul secara automatik .
Juga, kita harus perhatikan bahawa pilihan untuk menghasilkan fail metadata ini juga tersedia melalui pintasan Alt + ENTER IntelliJ di atas harta yang tidak diketahui.
6. Kesimpulannya
Dalam artikel ini, kami melihat bagaimana IntelliJ menggunakan metadata properti konfigurasi untuk memberikan bantuan dengan fail sifat kami.
Kami melihat bagaimana menggunakan pemproses anotasi Spring untuk menghasilkan metadata dari kelas tersuai. Kemudian, kami melihat cara menggunakan jalan pintas di IntelliJ untuk membuat fail metadata untuk diedit secara manual.
Seperti biasa, kod dari contoh dalam artikel ini boleh didapati di GitHub.