Spring Cloud Config Server menawarkan manfaat berikut:
API berbasis sumber daya HTTP untuk konfigurasi eksternal (pasangan nama-nilai atau konten YAML yang setara)
Enkripsi dan dekripsi nilai properti (simetris atau asimetris)
Dapat disematkan dengan mudah di aplikasi Spring Boot menggunakan @EnableConfigServer
Khusus untuk aplikasi Spring, Spring Cloud Config Client memungkinkan Anda:
Ikat ke Config Server dan inisialisasi Spring Environment
dengan sumber properti jarak jauh.
Enkripsi dan dekripsi nilai properti (simetris atau asimetris).
@RefreshScope
untuk Spring @Beans
yang ingin diinisialisasi ulang ketika konfigurasi berubah.
Gunakan titik akhir manajemen:
/env
untuk memperbarui Environment
dan mengikat ulang @ConfigurationProperties
dan level log.
/refresh
untuk menyegarkan kacang @RefreshScope
.
/restart
untuk memulai ulang konteks Spring (dinonaktifkan secara default).
/pause
dan /resume
untuk memanggil metode Lifecycle
( stop()
dan start()
pada ApplicationContext
).
Konteks aplikasi bootstrap: konteks induk untuk aplikasi utama yang dapat dilatih untuk melakukan apa saja (secara default, ini mengikat ke Server Konfigurasi dan mendekripsi nilai properti).
Anda dapat menemukan contoh aplikasi di sini. Ini adalah aplikasi Spring Boot, jadi Anda dapat menjalankannya dengan menggunakan mekanisme biasa (misalnya, mvn spring-boot:run
). Saat dijalankan, ia mencari server konfigurasi di http://localhost:8888
(default yang dapat dikonfigurasi), sehingga Anda dapat menjalankan server juga untuk melihat semuanya bekerja bersama.
Sampel memiliki kasus pengujian di mana server konfigurasi juga dimulai di JVM yang sama (dengan port berbeda), dan pengujian tersebut menegaskan bahwa properti lingkungan dari repo konfigurasi git ada. Untuk mengubah lokasi server konfigurasi, Anda dapat mengatur spring.cloud.config.uri
di bootstrap.yml
(atau di properti sistem dan tempat lain).
Kasus uji memiliki metode main()
yang menjalankan server dengan cara yang sama (perhatikan log portnya), sehingga Anda dapat menjalankan seluruh sistem dalam satu proses dan memainkannya (misalnya, Anda dapat menjalankan main()
metode di IDE Anda). Metode main()
menggunakan target/config
untuk direktori kerja repositori git, sehingga Anda dapat membuat perubahan lokal di sana dan melihatnya tercermin dalam aplikasi yang sedang berjalan. Contoh berikut menunjukkan sesi mengutak-atik test case:
$ curl localhost:8080/env/sampel tes saya $ vi target/config/mytest.properties .. ubah nilai "sampel", komit secara opsional $ curl -X POST localhost:8080/segarkan ["mencicipi"] $ curl localhost:8080/env/sampel nilai sampel
Titik akhir penyegaran melaporkan bahwa properti "sampel" berubah.
Untuk membangun sumber Anda perlu menginstal JDK 17.
Spring Cloud menggunakan Maven untuk sebagian besar aktivitas terkait pembangunan, dan Anda seharusnya dapat memulai dengan cukup cepat dengan mengkloning proyek yang Anda minati dan mengetik
$ ./mvnw pasang
Catatan | Anda juga dapat menginstal Maven (>=3.3.3) sendiri dan menjalankan perintah mvn sebagai pengganti ./mvnw pada contoh di bawah. Jika Anda melakukannya, Anda juga mungkin perlu menambahkan -P spring jika pengaturan Maven lokal Anda tidak berisi deklarasi repositori untuk artefak pra-rilis pegas. |
Catatan | Ketahuilah bahwa Anda mungkin perlu menambah jumlah memori yang tersedia untuk Maven dengan mengatur variabel lingkungan MAVEN_OPTS dengan nilai seperti -Xmx512m -XX:MaxPermSize=128m . Kami mencoba untuk membahas hal ini dalam konfigurasi .mvn , jadi jika Anda merasa harus melakukannya agar build berhasil, harap ajukan tiket agar pengaturan ditambahkan ke kontrol sumber. |
Proyek yang memerlukan middleware (yaitu Redis) untuk pengujian umumnya memerlukan instance lokal [Docker](https://www.docker.com/get-started) diinstal dan dijalankan.
Modul spring-cloud-build memiliki profil "docs", dan jika Anda mengaktifkannya, modul tersebut akan mencoba membangun sumber asciidoc menggunakan Antora dari modules/ROOT/
.
Sebagai bagian dari proses itu, ia akan mencari docs/src/main/asciidoc/README.adoc
dan memprosesnya dengan memuat semua penyertaannya, namun tidak menguraikan atau merendernya, hanya menyalinnya ke ${main.basedir}
(defaultnya adalah ${basedir}
, yaitu akar proyek). Jika ada perubahan apa pun di README, perubahan tersebut akan muncul setelah Maven dibuat sebagai file yang dimodifikasi di tempat yang benar. Komit saja dan dorong perubahannya.
Jika Anda tidak memiliki preferensi IDE, kami sarankan Anda menggunakan Spring Tools Suite atau Eclipse saat bekerja dengan kode. Kami menggunakan plugin gerhana m2eclipse untuk dukungan maven. IDE dan alat lain juga akan berfungsi tanpa masalah selama menggunakan Maven 3.3.3 atau lebih baik.
Proyek Spring Cloud memerlukan profil Maven 'pegas' untuk diaktifkan guna menyelesaikan tonggak sejarah musim semi dan repositori snapshot. Gunakan IDE pilihan Anda untuk mengatur profil ini agar aktif, atau Anda mungkin mengalami kesalahan pembuatan.
Kami merekomendasikan plugin m2eclipse Eclipse saat bekerja dengan Eclipse. Jika Anda belum menginstal m2eclipse, m2eclipse tersedia dari "pasar gerhana".
Catatan | Versi m2e yang lebih lama tidak mendukung Maven 3.3, jadi setelah proyek diimpor ke Eclipse Anda juga perlu memberi tahu m2eclipse untuk menggunakan profil yang tepat untuk proyek tersebut. Jika Anda melihat banyak kesalahan berbeda terkait dengan POM di proyek, periksa apakah Anda memiliki instalasi terbaru. Jika Anda tidak dapat memutakhirkan m2e, tambahkan profil "pegas" ke settings.xml Anda. Alternatifnya, Anda dapat menyalin pengaturan repositori dari profil "pegas" pom induk ke settings.xml Anda. |
Jika Anda memilih untuk tidak menggunakan m2eclipse, Anda dapat membuat metadata proyek Eclipse menggunakan perintah berikut:
$ ./mvnw gerhana: gerhana
Proyek gerhana yang dihasilkan dapat diimpor dengan memilih import existing projects
dari menu file
.
Jika Anda mendapatkan pengecualian karena "Ukuran kunci ilegal" dan Anda menggunakan JDK Sun, Anda perlu menginstal File Kebijakan Yurisdiksi Kekuatan Tak Terbatas Java Cryptography Extension (JCE). Lihat tautan berikut untuk informasi lebih lanjut:
Jawa 6 JCE
Jawa 7 JCE
Jawa 8 JCE
Ekstrak file JCE ke folder JDK/jre/lib/security
untuk versi JRE/JDK x64/x86 mana pun yang Anda gunakan.
Spring Cloud dirilis di bawah lisensi Apache 2.0 yang tidak membatasi, dan mengikuti proses pengembangan Github yang sangat standar, menggunakan pelacak Github untuk masalah dan menggabungkan permintaan tarik ke utama. Jika Anda ingin berkontribusi meski hanya hal sepele, jangan ragu, ikuti panduan di bawah ini.
Sebelum kami menerima patch atau permintaan penarikan yang tidak sepele, kami memerlukan Anda untuk menandatangani Perjanjian Lisensi Kontributor. Menandatangani perjanjian kontributor tidak memberikan hak komitmen kepada siapa pun atas repositori utama, namun itu berarti kami dapat menerima kontribusi Anda, dan Anda akan mendapatkan kredit penulis jika kami menerimanya. Kontributor aktif mungkin diminta untuk bergabung dengan tim inti, dan diberikan kemampuan untuk menggabungkan permintaan penarikan.
Proyek ini mematuhi kode etik Perjanjian Kontributor. Dengan berpartisipasi, Anda diharapkan menjunjung tinggi kode ini. Silakan laporkan perilaku yang tidak dapat diterima ke [email protected].
Tidak ada satupun yang penting untuk pull request, namun semuanya akan membantu. Mereka juga dapat ditambahkan setelah permintaan penarikan asli tetapi sebelum penggabungan.
Gunakan konvensi format kode Spring Framework. Jika Anda menggunakan Eclipse, Anda dapat mengimpor pengaturan formatter menggunakan file eclipse-code-formatter.xml
dari proyek Spring Cloud Build. Jika menggunakan IntelliJ, Anda dapat menggunakan Plugin Eclipse Code Formatter untuk mengimpor file yang sama.
Pastikan semua file .java
baru memiliki komentar kelas Javadoc sederhana dengan setidaknya tag @author
yang mengidentifikasi Anda, dan sebaiknya setidaknya satu paragraf tentang tujuan kelas tersebut.
Tambahkan komentar header lisensi ASF ke semua file .java
baru (salin dari file yang ada di proyek)
Tambahkan diri Anda sebagai @author
ke file .java yang Anda modifikasi secara substansial (lebih dari sekadar perubahan tampilan).
Tambahkan beberapa Javadocs dan, jika Anda mengubah namespace, beberapa elemen dokumen XSD.
Beberapa pengujian unit juga akan sangat membantu — seseorang harus melakukannya.
Jika tidak ada orang lain yang menggunakan cabang Anda, silakan lakukan rebase terhadap cabang utama saat ini (atau cabang target lain di proyek utama).
Saat menulis pesan komit, harap ikuti konvensi ini, jika Anda memperbaiki masalah yang ada, harap tambahkan Fixes gh-XXXX
di akhir pesan komit (di mana XXXX adalah nomor masalahnya).
Spring Cloud Build hadir dengan serangkaian aturan checkstyle. Anda dapat menemukannya di modul spring-cloud-build-tools
. File yang paling menonjol di bawah modul ini adalah:
└── src ├── gaya cek │ └── checkstyle-suppressions.xml (3) └── utama └── sumber daya ├── checkstyle-header.txt (2) └── checkstyle.xml (1)
Aturan Gaya Periksa Default
Pengaturan tajuk file
Aturan penindasan default
Aturan checkstyle dinonaktifkan secara default . Untuk menambahkan checkstyle ke proyek Anda cukup tentukan properti dan plugin berikut.
<properti> <maven-checkstyle-plugin.failsOnError>benar</maven-checkstyle-plugin.failsOnError> (1) <maven-checkstyle-plugin.failsOnViolation>benar </maven-checkstyle-plugin.failsOnViolation> (2) <maven-checkstyle-plugin.includeTestSourceDirectory>benar </maven-checkstyle-plugin.includeTestSourceDirectory> (3) </properti> <membangun> <plugin> <plugin> (4) <groupId>io.spring.javaformat</groupId> <artifactId>spring-javaformat-maven-plugin</artifactId> </plugin> <plugin> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> </plugin> </plugin> <pelaporan> <plugin> <plugin> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> </plugin> </plugin> </pelaporan> </membangun>
Gagal membangun kesalahan Checkstyle
Gagal membangun pelanggaran Checkstyle
Analisis Checkstyle juga sumber pengujian
Tambahkan plugin Spring Java Format yang akan memformat ulang kode Anda agar dapat melewati sebagian besar aturan pemformatan Checkstyle
Tambahkan plugin checkstyle ke fase pembuatan dan pelaporan Anda
Jika Anda perlu menyembunyikan beberapa aturan (misalnya panjang garis harus lebih panjang), maka cukup bagi Anda untuk mendefinisikan file di bawah ${project.root}/src/checkstyle/checkstyle-suppressions.xml
dengan penekanan Anda. Contoh:
<?xml versi="1.0"?> <!DOCTYPE menekan PUBLIC "-//Perayapan Anak Anjing//Penindasan DTD 1.1//EN" "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> <penindasan> <menekan files=".*ConfigServerApplication.java" checks="HideUtilityClassConstructor"/> <menekan files=".*ConfigClientWatch.java" checks="LineLengthCheck"/> </penindasan>
Sebaiknya salin format ${spring-cloud-build.rootFolder}/.editorconfig
dan ${spring-cloud-build.rootFolder}/.springformat
ke proyek Anda. Dengan begitu, beberapa aturan pemformatan default akan diterapkan. Anda dapat melakukannya dengan menjalankan skrip ini:
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/.editorconfig -o .editorconfig
$ touch .springformat
Untuk menyiapkan Intellij, Anda harus mengimpor konvensi pengkodean kami, profil inspeksi, dan menyiapkan plugin checkstyle. File berikut dapat ditemukan di proyek Spring Cloud Build.
└── src ├── gaya cek │ └── checkstyle-suppressions.xml (3) └── utama └── sumber daya ├── checkstyle-header.txt (2) ├── checkstyle.xml (1) └── kecerdasan ├── Intellij_Project_Defaults.xml (4) └── Intellij_Spring_Boot_Java_Conventions.xml (5)
Aturan Gaya Periksa Default
Pengaturan tajuk file
Aturan penindasan default
Default proyek untuk Intellij yang menerapkan sebagian besar aturan Checkstyle
Konvensi gaya proyek untuk Intellij yang menerapkan sebagian besar aturan Checkstyle
Buka File
→ Settings
→ Editor
→ Code style
. Di sana klik ikon di sebelah bagian Scheme
. Di sana, klik pada nilai Import Scheme
dan pilih opsi Intellij IDEA code style XML
. Impor file spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml
.
Buka File
→ Settings
→ Editor
→ Inspections
. Di sana klik ikon di sebelah bagian Profile
. Di sana, klik Import Profile
dan impor file spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml
.
Agar Intellij berfungsi dengan Checkstyle, Anda harus menginstal plugin Checkstyle
. Disarankan juga untuk menginstal Assertions2Assertj
untuk secara otomatis mengonversi pernyataan JUnit
Buka File
→ Settings
→ Other settings
→ Checkstyle
. Di sana klik ikon +
di bagian Configuration file
. Di sana, Anda harus menentukan dari mana aturan checkstyle harus dipilih. Pada gambar di atas, kami telah memilih aturan dari repositori Spring Cloud Build yang dikloning. Namun, Anda dapat menunjuk ke repositori GitHub Spring Cloud Build (misalnya untuk checkstyle.xml
: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle.xml
). Kita perlu menyediakan variabel berikut:
checkstyle.header.file
- harap arahkan ke file Spring Cloud Build, spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
baik di repo kloning Anda atau melalui https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
URL https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
.
checkstyle.suppressions.file
- penindasan default. Harap arahkan ke file Spring Cloud Build, spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
baik di repo kloning Anda atau melalui https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
URL.
checkstyle.additional.suppressions.file
- variabel ini sesuai dengan penekanan di proyek lokal Anda. Misalnya Anda sedang mengerjakan spring-cloud-contract
. Lalu arahkan ke folder project-root/src/checkstyle/checkstyle-suppressions.xml
. Contoh untuk spring-cloud-contract
adalah: /home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml
.
Penting | Ingatlah untuk mengatur Scan Scope ke All sources karena kami menerapkan aturan gaya periksa untuk sumber produksi dan pengujian. |
Spring Cloud Build menghadirkan basepom:duplicate-finder-maven-plugin
, yang memungkinkan penandaan kelas dan sumber daya duplikat dan konflik di jalur kelas java.
Pencari duplikat diaktifkan secara default dan akan berjalan pada fase verify
build Maven Anda, namun ini hanya akan berlaku di proyek Anda jika Anda menambahkan duplicate-finder-maven-plugin
ke bagian build
pom.xml
proyek.
< build >
< plugins >
< plugin >
< groupId >org.basepom.maven</ groupId >
< artifactId >duplicate-finder-maven-plugin</ artifactId >
</ plugin >
</ plugins >
</ build >
Untuk properti lainnya, kami telah menetapkan default seperti yang tercantum dalam dokumentasi plugin.
Anda dapat dengan mudah menimpanya tetapi menetapkan nilai properti yang dipilih yang diawali dengan duplicate-finder-maven-plugin
. Misalnya, setel duplicate-finder-maven-plugin.skip
ke true
untuk melewati pemeriksaan duplikat di build Anda.
Jika Anda perlu menambahkan ignoredClassPatterns
atau ignoredResourcePatterns
ke pengaturan Anda, pastikan untuk menambahkannya di bagian konfigurasi plugin proyek Anda:
< build >
< plugins >
< plugin >
< groupId >org.basepom.maven</ groupId >
< artifactId >duplicate-finder-maven-plugin</ artifactId >
< configuration >
< ignoredClassPatterns >
< ignoredClassPattern >org.joda.time.base.BaseDateTime</ ignoredClassPattern >
< ignoredClassPattern >.*module-info</ ignoredClassPattern >
</ ignoredClassPatterns >
< ignoredResourcePatterns >
< ignoredResourcePattern >changelog.txt</ ignoredResourcePattern >
</ ignoredResourcePatterns >
</ configuration >
</ plugin >
</ plugins >
</ build >