برنامج تعليمي: استخدم تكوين ديناميكي في تطبيق 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
تكوين التطبيق ، والذي يمكن استخدامه للتحقق مما إذا كانت ذاكرة التخزين المؤقت قد انتهت صلاحيتها وإذا انتهت صلاحيتها، فسيتم تشغيل تحديث.
حدث 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
الذي يعد صحيحًا إذا تم تشغيل تحديث، وخاطئًا إذا لم يكن. خاطئ تعني إما أن وقت انتهاء الصلاحية المخزن لم ينته، أو لم يكن هناك أي تغيير، أو أن مؤشر ترابط آخر يتحقق حاليًا من وجود تحديث.حدث
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
افتح مدخل Microsoft Azure وانتقل إلى مورد تكوين التطبيق المقترن بتطبيقك. حدد مستكشف التكوين تحت العمليات وأنشئ زوجًا جديدًا لقيمة المفتاح عن طريق تحديد + إنشاء>قيمة مفتاح لإضافة المعلمات التالية:
مفتاح القيمة رقيب 1 اترك التسمية ونوع المحتوى فارغَين في الوقت الحالي.
حدد تطبيق.
قم ببناء تطبيق Spring Boot الخاص بك مع Maven وتشغيله.
mvn clean package mvn spring-boot:run
افتح نافذة مستعرض، ثم انتقل إلى عنوان URL:
http://localhost:8080
. سترى الرسالة المقترنة بمفتاحك.يمكنك أيضًا استخدام curl لاختبار تطبيقك، على سبيل المثال:
curl -X GET http://localhost:8080/
لاختبار التكوين الديناميكي، افتح مدخل Azure App Configuration المقترن بتطبيقك. حدد مستكشف التكوين، ثم قم بتحديث قيمة مفتاحك المعروضة، على سبيل المثال:
مفتاح القيمة /application/config.message مرحبًا - مُحدَثة قم بتحديث مفتاح الرقيب الذي قمت بإنشائه سابقًا إلى قيمة جديدة. يؤدي هذا التغيير إلى تشغيل التطبيق لتحديث جميع مفاتيح التكوين بمجرد مرور الفاصل الزمني للتحديث.
مفتاح القيمة رقيب 2 قم بتحديث صفحة المستعرض مرتين لعرض الرسالة الجديدة. في المرة الأولى التي يتم فيها تشغيل التحديث، تعمل الثانية على تحميل التغييرات.
إشعار
تتحقق المكتبة فقط من وجود تغييرات على بعد مرور الفاصل الزمني للتحديث، وفي حالة عدم مرور الفترة فلن يظهر أي تغيير وسيتعين عليك الانتظار حتى تمر الفترة ثم تشغيل التحقق من التحديث.
استخدام التحديث التلقائي
لاستخدام التحديث التلقائي، ابدأ بتطبيق 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>
حدث
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
افتح مدخل Microsoft Azure وانتقل إلى مورد تكوين التطبيق المقترن بتطبيقك. حدد مستكشف التكوين تحت العمليات وأنشئ زوجًا جديدًا لقيمة المفتاح عن طريق تحديد + إنشاء>قيمة مفتاح لإضافة المعلمات التالية:
مفتاح القيمة رقيب 1 اترك التسمية ونوع المحتوى فارغَين في الوقت الحالي.
حدد تطبيق.
قم ببناء تطبيق Spring Boot الخاص بك مع Maven وتشغيله.
mvn clean package mvn spring-boot:run
افتح نافذة مستعرض، ثم انتقل إلى عنوان URL:
http://localhost:8080
. سترى الرسالة المقترنة بمفتاحك.يمكنك أيضًا استخدام curl لاختبار تطبيقك، على سبيل المثال:
curl -X GET http://localhost:8080/
لاختبار التكوين الديناميكي، افتح مدخل Azure App Configuration المقترن بتطبيقك. حدد مستكشف التكوين، ثم قم بتحديث قيمة مفتاحك المعروضة، على سبيل المثال:
مفتاح القيمة /application/config.message مرحبًا - مُحدَثة قم بتحديث مفتاح الرقيب الذي قمت بإنشائه سابقًا إلى قيمة جديدة. يؤدي هذا التغيير إلى تشغيل التطبيق لتحديث جميع مفاتيح التكوين بمجرد مرور الفاصل الزمني للتحديث.
مفتاح القيمة رقيب 2 قم بتحديث صفحة المستعرض مرتين لعرض الرسالة الجديدة. في المرة الأولى التي يتم فيها تشغيل التحديث، تبدأ الثانية بتحميل التغييرات، إذ يعود الطلب الأول باستخدام النطاق الأصلي.
إشعار
تتحقق المكتبة فقط من التغييرات بعد مرور الفاصل الزمني للتحديث. إذا لم يمر الفاصل الزمني للتحديث، فلن يتحقق من التغييرات ويتعين عليك الانتظار حتى يمر الفاصل الزمني لتشغيل التحقق من التحديث.
الخطوات التالية
في هذا البرنامج التعليمي، قمت بتمكين تطبيق Spring Boot لتحديث إعدادات التكوين ديناميكيًا من تكوين التطبيق. للمزيد من الأسئلة، راجع الوثائق المرجعية حيث تتضمن كل التفاصيل حول كيفية عمل مكتبة Spring Cloud Azure App Configuration. لمعرفة كيفية استخدام هوية Azure المدارة لتبسيط الوصول إلى تكوين التطبيق، تابع البرنامج التعليمي التالي.