يقدم Spring Cloud Config Server المزايا التالية:
واجهة برمجة التطبيقات المستندة إلى موارد HTTP للتكوين الخارجي (أزواج قيمة الاسم أو محتوى YAML المكافئ)
تشفير وفك تشفير قيم الخصائص (متماثلة أو غير متماثلة)
يمكن تضمينه بسهولة في تطبيق Spring Boot باستخدام @EnableConfigServer
خصيصًا لتطبيقات Spring، يتيح لك Spring Cloud Config Client ما يلي:
اربط بخادم التكوين وقم بتهيئة Spring Environment
بمصادر الملكية البعيدة.
تشفير وفك تشفير قيم الخصائص (المتماثلة أو غير المتماثلة).
@RefreshScope
for @Beans
التي تريد إعادة تهيئتها عند تغيير التكوين.
استخدام نقاط نهاية الإدارة:
/env
لتحديث Environment
وإعادة ربط @ConfigurationProperties
ومستويات السجل.
/refresh
لتحديث حبوب @RefreshScope
.
/restart
لإعادة تشغيل سياق الربيع (معطل افتراضيًا).
/pause
و /resume
لاستدعاء أساليب Lifecycle
( stop()
و start()
في ApplicationContext
).
سياق تطبيق Bootstrap: سياق أصل للتطبيق الرئيسي يمكن تدريبه على القيام بأي شيء (افتراضيًا، يرتبط بخادم التكوين ويفك تشفير قيم الخصائص).
يمكنك العثور على تطبيق عينة هنا. إنه تطبيق Spring Boot، لذا يمكنك تشغيله باستخدام الآليات المعتادة (على سبيل المثال، mvn spring-boot:run
). عند تشغيله، فإنه يبحث عن خادم التكوين على http://localhost:8888
(افتراضي قابل للتكوين)، حتى تتمكن من تشغيل الخادم أيضًا لترى كل شيء يعمل معًا.
تحتوي العينة على حالة اختبار حيث يتم أيضًا تشغيل خادم التكوين في نفس JVM (بمنفذ مختلف)، ويؤكد الاختبار وجود خاصية بيئة من مستودع تكوين git. لتغيير موقع خادم التكوين، يمكنك تعيين spring.cloud.config.uri
في bootstrap.yml
(أو في خصائص النظام وأماكن أخرى).
تحتوي حالة الاختبار على طريقة main()
التي تقوم بتشغيل الخادم بنفس الطريقة (مراقبة السجلات الخاصة بمنفذها)، بحيث يمكنك تشغيل النظام بأكمله في عملية واحدة واللعب بها (على سبيل المثال، يمكنك تشغيل main()
الطريقة في IDE الخاص بك). يستخدم الأسلوب main()
target/config
لدليل العمل لمستودع git، حتى تتمكن من إجراء تغييرات محلية هناك ورؤيتها تنعكس في التطبيق قيد التشغيل. يوضح المثال التالي جلسة ترقيع لحالة الاختبار:
$ حليقة المضيف المحلي: 8080/env/sample com.mytest $ السادس الهدف/config/mytest.properties .. تغيير قيمة "العينة"، الالتزام اختياريًا $ الضفيرة -X POST المضيف المحلي:8080/تحديث ["عينة"] $ حليقة المضيف المحلي: 8080/env/sample قيمة العينة
تشير نقطة نهاية التحديث إلى تغيير خاصية "العينة".
لبناء المصدر، ستحتاج إلى تثبيت JDK 17.
يستخدم Spring Cloud Maven في معظم الأنشطة المتعلقة بالبناء، ويجب أن تكون قادرًا على البدء بسرعة كبيرة عن طريق استنساخ المشروع الذي تهتم به وكتابته
تثبيت $ ./mvnw
ملحوظة | يمكنك أيضًا تثبيت Maven (>=3.3.3) بنفسك وتشغيل الأمر mvn بدلاً من ./mvnw في الأمثلة أدناه. إذا قمت بذلك، فقد تحتاج أيضًا إلى إضافة -P spring إذا كانت إعدادات Maven المحلية الخاصة بك لا تحتوي على إعلانات مستودع لعناصر ما قبل الإصدار الربيعي. |
ملحوظة | انتبه إلى أنك قد تحتاج إلى زيادة مقدار الذاكرة المتوفرة لـ Maven عن طريق تعيين متغير بيئة MAVEN_OPTS بقيمة مثل -Xmx512m -XX:MaxPermSize=128m . نحن نحاول تغطية ذلك في تكوين .mvn ، لذا إذا وجدت أنه يتعين عليك القيام بذلك لإنجاح البناء، فيرجى تقديم تذكرة لإضافة الإعدادات إلى التحكم بالمصادر. |
تتطلب المشاريع التي تتطلب برامج وسيطة (مثل Redis) للاختبار عمومًا تثبيت وتشغيل مثيل محلي لـ [Docker](https://www.docker.com/get-started).
تحتوي وحدة Spring-cloud-build على ملف تعريف "docs"، وإذا قمت بتشغيله فسوف تحاول إنشاء مصادر asciidoc باستخدام Antora من modules/ROOT/
.
وكجزء من هذه العملية، سيبحث عن docs/src/main/asciidoc/README.adoc
ويعالجه عن طريق تحميل جميع التضمينات، ولكن ليس تحليله أو عرضه، فقط قم بنسخه إلى ${main.basedir}
(الإعداد الافتراضي هو ${basedir}
، أي جذر المشروع). إذا كانت هناك أية تغييرات في الملف التمهيدي (README)، فسوف يظهر بعد إنشاء Maven كملف معدل في المكان الصحيح. فقط قم بتنفيذه وادفع التغيير.
إذا لم يكن لديك تفضيل IDE، فنوصيك باستخدام Spring Tools Suite أو Eclipse عند العمل مع الكود. نحن نستخدم البرنامج المساعد m2Eclipse Eclipse للحصول على الدعم المخضرم. يجب أيضًا أن تعمل بيئة التطوير والأدوات الأخرى بدون مشكلة طالما أنها تستخدم Maven 3.3.3 أو أفضل.
تتطلب مشاريع Spring Cloud تنشيط ملف تعريف Maven "الربيعي" لحل أحداث الربيع ومستودعات اللقطات. استخدم IDE المفضل لديك لتعيين ملف التعريف هذا ليكون نشطًا، وإلا قد تواجه أخطاء في البناء.
نوصي باستخدام البرنامج المساعد m2Eclipse Eclipse عند العمل مع Eclipse. إذا لم تكن قد قمت بتثبيت m2Eclipse بالفعل، فهو متاح من "Eclipse Marketplace".
ملحوظة | الإصدارات الأقدم من m2e لا تدعم Maven 3.3، لذلك بمجرد استيراد المشاريع إلى Eclipse، ستحتاج أيضًا إلى إخبار m2Eclipse باستخدام ملف التعريف الصحيح للمشاريع. إذا رأيت العديد من الأخطاء المختلفة المتعلقة بـ POMs في المشاريع، فتأكد من أن لديك تثبيتًا محدثًا. إذا لم تتمكن من ترقية m2e، أضف ملف تعريف "الربيع" إلى settings.xml الخاص بك. وبدلاً من ذلك، يمكنك نسخ إعدادات المستودع من ملف تعريف "spring" الخاص بـ pom الأصلي إلى settings.xml الخاص بك. |
إذا كنت تفضل عدم استخدام m2Eclipse، فيمكنك إنشاء بيانات تعريف مشروع Eclipse باستخدام الأمر التالي:
$ ./mvnw Eclipse:Eclipse
يمكن استيراد مشاريع الكسوف التي تم إنشاؤها عن طريق تحديد import existing projects
من قائمة file
.
إذا حصلت على استثناء بسبب "حجم المفتاح غير القانوني" وكنت تستخدم Sun's JDK، فستحتاج إلى تثبيت Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files. انظر الروابط التالية لمزيد من المعلومات:
جافا 6 جي سي إي
جافا 7 جي سي إي
جافا 8 جي سي إي
قم باستخراج ملفات JCE إلى مجلد JDK/jre/lib/security
لأي إصدار تستخدمه من JRE/JDK x64/x86.
تم إصدار Spring Cloud بموجب ترخيص Apache 2.0 غير المقيد، ويتبع عملية تطوير Github قياسية للغاية، باستخدام أداة تعقب Github للمشكلات ودمج طلبات السحب في التطبيق الرئيسي. إذا كنت تريد المساهمة ولو بشيء تافه، فلا تتردد، ولكن اتبع الإرشادات أدناه.
قبل أن نقبل أي طلب تصحيح أو سحب غير تافه، سنحتاج منك التوقيع على اتفاقية ترخيص المساهم. إن التوقيع على اتفاقية المساهمين لا يمنح أي شخص حقوقًا ملتزمة بالمستودع الرئيسي، ولكنه يعني أنه يمكننا قبول مساهماتك، وستحصل على رصيد المؤلف إذا فعلنا ذلك. قد يُطلب من المساهمين النشطين الانضمام إلى الفريق الأساسي، ومنحهم القدرة على دمج طلبات السحب.
يلتزم هذا المشروع بمدونة قواعد سلوك ميثاق المساهمين. من خلال المشاركة، يتوقع منك الحفاظ على هذا الرمز. يرجى الإبلاغ عن السلوك غير المقبول إلى [email protected].
لا يعد أي من هذه الأمور ضروريًا لطلب السحب، ولكنها جميعها ستساعد. ويمكن أيضًا إضافتها بعد طلب السحب الأصلي ولكن قبل الدمج.
استخدم اصطلاحات تنسيق رمز Spring Framework. إذا كنت تستخدم Eclipse، فيمكنك استيراد إعدادات المنسق باستخدام ملف eclipse-code-formatter.xml
من مشروع Spring Cloud Build. إذا كنت تستخدم IntelliJ، فيمكنك استخدام Eclipse Code Formatter Plugin لاستيراد نفس الملف.
تأكد من أن جميع ملفات .java
الجديدة تحتوي على تعليق بسيط لفصل Javadoc مع علامة @author
على الأقل تحدد هويتك، ويفضل أن يكون على الأقل فقرة حول الغرض من الفصل.
أضف تعليق رأس ترخيص ASF إلى جميع ملفات .java
الجديدة (نسخة من الملفات الموجودة في المشروع)
أضف نفسك @author
إلى ملفات .java التي تقوم بتعديلها بشكل جوهري (أكثر من مجرد تغييرات تجميلية).
أضف بعض مستندات Javadocs، وإذا قمت بتغيير مساحة الاسم، أضف بعض عناصر مستند XSD.
من شأن بعض اختبارات الوحدات أن تساعد كثيرًا أيضًا - يجب على شخص ما القيام بذلك.
إذا لم يكن هناك أي شخص آخر يستخدم فرعك، فيرجى إعادة مقارنته بالفرع الرئيسي الحالي (أو أي فرع آخر مستهدف في المشروع الرئيسي).
عند كتابة رسالة التزام، يرجى اتباع هذه القواعد، إذا كنت تقوم بإصلاح مشكلة موجودة، فيرجى إضافة Fixes gh-XXXX
في نهاية رسالة الالتزام (حيث XXXX هو رقم الإصدار).
يأتي Spring Cloud Build مع مجموعة من قواعد checkstyle. يمكنك العثور عليها في وحدة spring-cloud-build-tools
. أبرز الملفات ضمن الوحدة هي:
└── سرك ├── نمط الاختيار │ └── checkstyle-suppressions.xml (3) └── رئيسي └── الموارد ├── checkstyle-header.txt (2) └── checkstyle.xml (1)
قواعد Checkstyle الافتراضية
إعداد رأس الملف
قواعد القمع الافتراضية
يتم تعطيل قواعد Checkstyle بشكل افتراضي . لإضافة نمط الاختيار إلى مشروعك، ما عليك سوى تحديد الخصائص والمكونات الإضافية التالية.
<خصائص> <maven-checkstyle-plugin.failsOnError>صحيح</maven-checkstyle-plugin.failsOnError> (1) <maven-checkstyle-plugin.failsOnViolation>صحيح </maven-checkstyle-plugin.failsOnViolation> (2) <maven-checkstyle-plugin.includeTestSourceDirectory>صحيح </maven-checkstyle-plugin.includeTestSourceDirectory> (3) </خصائص> <بناء> <الإضافات> <البرنامج المساعد> (4) <groupId>io.spring.javaformat</groupId> <artifactId>spring-javaformat-maven-plugin</artifactId> </plugin> <البرنامج المساعد> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> </plugin> </الإضافات> <الإبلاغ> <الإضافات> <البرنامج المساعد> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> </plugin> </الإضافات> </التقارير> </بناء>
فشل البناء على أخطاء Checkstyle
فشل البناء على انتهاكات Checkstyle
يقوم Checkstyle أيضًا بتحليل مصادر الاختبار
أضف المكوّن الإضافي Spring Java Format الذي سيعيد تنسيق التعليمات البرمجية الخاصة بك لتمرير معظم قواعد تنسيق Checkstyle
قم بإضافة البرنامج المساعد checkstyle إلى مرحلتي الإنشاء وإعداد التقارير
إذا كنت بحاجة إلى منع بعض القواعد (على سبيل المثال، يجب أن يكون طول السطر أطول)، فيكفي أن تحدد ملفًا ضمن ${project.root}/src/checkstyle/checkstyle-suppressions.xml
مع عمليات المنع الخاصة بك. مثال:
<?xml version="1.0"?> <!DOCTYPE عمليات القمع العامة "-//زحف الجرو//قمع DTD 1.1//EN" "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> <القمع> <suppress files=".*ConfigServerApplication.java" checks="HideUtilityClassConstructor"/> <suppress files=".*ConfigClientWatch.java" checks="LineLengthCheck"/> </قمع>
يُنصح بنسخ ${spring-cloud-build.rootFolder}/.editorconfig
و ${spring-cloud-build.rootFolder}/.springformat
إلى مشروعك. بهذه الطريقة، سيتم تطبيق بعض قواعد التنسيق الافتراضية. يمكنك القيام بذلك عن طريق تشغيل هذا البرنامج النصي:
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/.editorconfig -o .editorconfig
$ touch .springformat
من أجل إعداد Intellij، يجب عليك استيراد اتفاقيات الترميز وملفات تعريف الفحص وإعداد البرنامج الإضافي checkstyle. يمكن العثور على الملفات التالية في مشروع Spring Cloud Build.
└── سرك ├── نمط الاختيار │ └── checkstyle-suppressions.xml (3) └── رئيسي └── الموارد ├── checkstyle-header.txt (2) ├── checkstyle.xml (1) └── ذكي ├── Intellij_Project_Defaults.xml (4) └── Intellij_Spring_Boot_Java_Conventions.xml (5)
قواعد Checkstyle الافتراضية
إعداد رأس الملف
قواعد القمع الافتراضية
افتراضيات المشروع لـ Intellij التي تطبق معظم قواعد Checkstyle
اصطلاحات نمط المشروع لـ Intellij التي تطبق معظم قواعد Checkstyle
انتقل إلى File
→ Settings
→ Editor
→ Code style
. هناك انقر على الأيقونة المجاورة لقسم Scheme
. هناك، انقر فوق قيمة Import Scheme
واختر خيار Intellij IDEA code style XML
. قم باستيراد الملف spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml
.
انتقل إلى File
→ Settings
→ Editor
→ Inspections
. هناك انقر على الأيقونة المجاورة لقسم Profile
. هناك، انقر فوق Import Profile
واستورد ملف spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml
.
لكي يعمل Intellij مع Checkstyle، يجب عليك تثبيت البرنامج الإضافي Checkstyle
. يُنصح أيضًا بتثبيت Assertions2Assertj
لتحويل تأكيدات JUnit تلقائيًا
انتقل إلى File
→ Settings
→ Other settings
→ Checkstyle
. انقر هناك على أيقونة +
في قسم Configuration file
. هناك، سيتعين عليك تحديد المكان الذي يجب انتقاء قواعد نمط التحقق منه. في الصورة أعلاه، اخترنا القواعد من مستودع Spring Cloud Build المستنسخ. ومع ذلك، يمكنك الإشارة إلى مستودع GitHub الخاص بـ Spring Cloud Build (على سبيل المثال، checkstyle.xml
: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle.xml
). نحن بحاجة إلى توفير المتغيرات التالية:
checkstyle.header.file
- يرجى توجيهه إلى ملف Spring Cloud Build's، spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
إما في الريبو المستنسخ أو عبر https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
URL.
checkstyle.suppressions.file
- عمليات القمع الافتراضية. يرجى الإشارة إلى ملف Spring Cloud Build's، spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
إما في الريبو المستنسخ أو عبر https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
URL.
checkstyle.additional.suppressions.file
- يتوافق هذا المتغير مع عمليات القمع في مشروعك المحلي. على سبيل المثال، أنت تعمل على spring-cloud-contract
. ثم أشر إلى المجلد project-root/src/checkstyle/checkstyle-suppressions.xml
. مثال على spring-cloud-contract
سيكون: /home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml
.
مهم | تذكر تعيين Scan Scope على All sources نظرًا لأننا نطبق قواعد نمط الاختيار على مصادر الإنتاج والاختبار. |
يأتي Spring Cloud Build مع basepom:duplicate-finder-maven-plugin
، الذي يتيح وضع علامة على الفئات والموارد المكررة والمتضاربة في مسار فئة Java.
يتم تمكين Duplicate Finder افتراضيًا وسيتم تشغيله في مرحلة verify
من بناء Maven الخاص بك، ولكنه لن يصبح ساري المفعول في مشروعك إلا إذا قمت بإضافة duplicate-finder-maven-plugin
إلى قسم build
في pom.xml
الخاص بالمشروع.
< build >
< plugins >
< plugin >
< groupId >org.basepom.maven</ groupId >
< artifactId >duplicate-finder-maven-plugin</ artifactId >
</ plugin >
</ plugins >
</ build >
بالنسبة للخصائص الأخرى، قمنا بتعيين الإعدادات الافتراضية كما هو مذكور في وثائق البرنامج المساعد.
يمكنك تجاوزها بسهولة ولكن قم بتعيين قيمة الخاصية المحددة مسبوقة بـ duplicate-finder-maven-plugin
. على سبيل المثال، قم بتعيين duplicate-finder-maven-plugin.skip
على true
لتخطي التحقق من التكرارات في الإصدار الخاص بك.
إذا كنت بحاجة إلى إضافة ignoredClassPatterns
أو ignoredResourcePatterns
إلى الإعداد الخاص بك، فتأكد من إضافتها في قسم تكوين البرنامج المساعد لمشروعك:
< 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 >