برنامج تعليمي: استخدم تكوين ديناميكي في تطبيق Java Spring

يحتوي تكوين التطبيق على مكتبتين لـ Spring.

  • spring-cloud-azure-appconfiguration-config يتطلب Spring Boot ويعتمد على spring-cloud-context.
  • spring-cloud-azure-appconfiguration-config-webيتطلب Spring Web جنبًا إلى جنب مع Spring Boot، ويضيف أيضًا دعمًا للتحقق التلقائي من تحديث التكوين.

تدعم المكتبتان التشغيل اليدوي للتحقق من قيم التكوين المحدَّثة.

يسمح لك التحديث بتحديث قيم التكوين الخاصة بك دون الحاجة إلى إعادة تشغيل التطبيق الخاص بك، على الرغم من أنه يتسبب في إعادة إنشاء جميع الفاصوليا في @RefreshScope . يفحص أي تغييرات على المشغلات التي كونت بما في ذلك بيانات التعريف. يتم، بشكل افتراضي، تعيين الحد الأدنى من الوقت بين عمليات التحقق من التغييرات والفاصل الزمني للتحديث على 30 ثانية.

spring-cloud-azure-appconfiguration-config-webيتم تشغيل التحديث التلقائي على أساس النشاط وتحديدًا ServletRequestHandledEvent لـ Spring Web. ServletRequestHandledEvent إذا لم يتم تشغيل ، spring-cloud-azure-appconfiguration-config-webلا يقوم التحديث التلقائي بتشغيل تحديث حتى إذا انتهت صلاحية وقت انتهاء صلاحية ذاكرة التخزين المؤقت.

استخدام التحديث اليدوي

لاستخدام التحديث التلقائي، ابدأ بتطبيق Spring Boot الذي يستخدم «تكوين التطبيق» مثل التطبيق الذي تنشئه باتباع تشغيل Spring Boot السريع لتكوين التطبيق.

يعرض AppConfigurationRefreshتكوين التطبيق ، والذي يمكن استخدامه للتحقق مما إذا كانت ذاكرة التخزين المؤقت قد انتهت صلاحيتها وإذا انتهت صلاحيتها، فسيتم تشغيل تحديث.

  1. حدث HelloController لاستخدام AppConfigurationRefresh.

    import com.azure.spring.cloud.config.AppConfigurationRefresh;
    
    @RestController
    public class HelloController {
        private final MessageProperties properties;
    
        @Autowired(required = false)
        private AppConfigurationRefresh refresh;
    
        public HelloController(MessageProperties properties) {
            this.properties = properties;
        }
    
        @GetMapping
        public String getMessage() throws InterruptedException, ExecutionException {
            if (refresh != null) {
                refresh.refreshConfigurations();
            }
            return "Message: " + properties.getMessage();
        }
    }
    

    refreshConfigurations() الخاص بـ AppConfigurationRefreshيعيد Mono الذي يعد صحيحًا إذا تم تشغيل تحديث، وخاطئًا إذا لم يكن. خاطئ تعني إما أن وقت انتهاء الصلاحية المخزن لم ينته، أو لم يكن هناك أي تغيير، أو أن مؤشر ترابط آخر يتحقق حاليًا من وجود تحديث.

  2. حدث bootstrap.properties لتمكين التحديثات

    spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled=true
    spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30s
    spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key=sentinel
    
  3. افتح مدخل Microsoft Azure وانتقل إلى مورد تكوين التطبيق المقترن بتطبيقك. حدد مستكشف التكوين تحت العمليات وأنشئ زوجًا جديدًا لقيمة المفتاح عن طريق تحديد + إنشاء>قيمة مفتاح لإضافة المعلمات التالية:

    مفتاح القيمة
    رقيب 1

    اترك التسمية ونوع المحتوى فارغَين في الوقت الحالي.

  4. حدد تطبيق.

  5. قم ببناء تطبيق Spring Boot الخاص بك مع Maven وتشغيله.

    mvn clean package
    mvn spring-boot:run
    
  6. افتح نافذة مستعرض، ثم انتقل إلى عنوان URL: http://localhost:8080. سترى الرسالة المقترنة بمفتاحك.

    يمكنك أيضًا استخدام curl لاختبار تطبيقك، على سبيل المثال:

    curl -X GET http://localhost:8080/
    
  7. لاختبار التكوين الديناميكي، افتح مدخل Azure App Configuration المقترن بتطبيقك. حدد مستكشف التكوين، ثم قم بتحديث قيمة مفتاحك المعروضة، على سبيل المثال:

    مفتاح القيمة
    /application/config.message مرحبًا - مُحدَثة
  8. قم بتحديث مفتاح الرقيب الذي قمت بإنشائه سابقًا إلى قيمة جديدة. يؤدي هذا التغيير إلى تشغيل التطبيق لتحديث جميع مفاتيح التكوين بمجرد مرور الفاصل الزمني للتحديث.

    مفتاح القيمة
    رقيب 2
  9. قم بتحديث صفحة المستعرض مرتين لعرض الرسالة الجديدة. في المرة الأولى التي يتم فيها تشغيل التحديث، تعمل الثانية على تحميل التغييرات.

إشعار

تتحقق المكتبة فقط من وجود تغييرات على بعد مرور الفاصل الزمني للتحديث، وفي حالة عدم مرور الفترة فلن يظهر أي تغيير وسيتعين عليك الانتظار حتى تمر الفترة ثم تشغيل التحقق من التحديث.

استخدام التحديث التلقائي

لاستخدام التحديث التلقائي، ابدأ بتطبيق Spring Boot الذي يستخدم تكوين التطبيق، مثل التطبيق الذي تنشئه باتباع تشغيل Spring Boot السريع لتكوين التطبيق.

ثم، افتح ملف pom.xml في محرر نص، ثم أضف <dependency> لـ spring-cloud-azure-appconfiguration-config-web باستخدام التعليمات البرمجية التالية.

Spring Boot

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
    <version>5.8.0</version>
</dependency>
  1. حدث bootstrap.properties لتمكين التحديثات

    spring.cloud.azure.appconfiguration.stores[0].monitoring.enabled=true
    spring.cloud.azure.appconfiguration.stores[0].monitoring.refresh-interval= 30s
    spring.cloud.azure.appconfiguration.stores[0].monitoring.triggers[0].key=sentinel
    
  2. افتح مدخل Microsoft Azure وانتقل إلى مورد تكوين التطبيق المقترن بتطبيقك. حدد مستكشف التكوين تحت العمليات وأنشئ زوجًا جديدًا لقيمة المفتاح عن طريق تحديد + إنشاء>قيمة مفتاح لإضافة المعلمات التالية:

    مفتاح القيمة
    رقيب 1

    اترك التسمية ونوع المحتوى فارغَين في الوقت الحالي.

  3. حدد تطبيق.

  4. قم ببناء تطبيق Spring Boot الخاص بك مع Maven وتشغيله.

    mvn clean package
    mvn spring-boot:run
    
  5. افتح نافذة مستعرض، ثم انتقل إلى عنوان URL: http://localhost:8080. سترى الرسالة المقترنة بمفتاحك.

    يمكنك أيضًا استخدام curl لاختبار تطبيقك، على سبيل المثال:

    curl -X GET http://localhost:8080/
    
  6. لاختبار التكوين الديناميكي، افتح مدخل Azure App Configuration المقترن بتطبيقك. حدد مستكشف التكوين، ثم قم بتحديث قيمة مفتاحك المعروضة، على سبيل المثال:

    مفتاح القيمة
    /application/config.message مرحبًا - مُحدَثة
  7. قم بتحديث مفتاح الرقيب الذي قمت بإنشائه سابقًا إلى قيمة جديدة. يؤدي هذا التغيير إلى تشغيل التطبيق لتحديث جميع مفاتيح التكوين بمجرد مرور الفاصل الزمني للتحديث.

    مفتاح القيمة
    رقيب 2
  8. قم بتحديث صفحة المستعرض مرتين لعرض الرسالة الجديدة. في المرة الأولى التي يتم فيها تشغيل التحديث، تبدأ الثانية بتحميل التغييرات، إذ يعود الطلب الأول باستخدام النطاق الأصلي.

إشعار

تتحقق المكتبة فقط من التغييرات بعد مرور الفاصل الزمني للتحديث. إذا لم يمر الفاصل الزمني للتحديث، فلن يتحقق من التغييرات ويتعين عليك الانتظار حتى يمر الفاصل الزمني لتشغيل التحقق من التحديث.

الخطوات التالية

في هذا البرنامج التعليمي، قمت بتمكين تطبيق Spring Boot لتحديث إعدادات التكوين ديناميكيًا من تكوين التطبيق. للمزيد من الأسئلة، راجع الوثائق المرجعية حيث تتضمن كل التفاصيل حول كيفية عمل مكتبة Spring Cloud Azure App Configuration. لمعرفة كيفية استخدام هوية Azure المدارة لتبسيط الوصول إلى تكوين التطبيق، تابع البرنامج التعليمي التالي.