البرنامج التعليمي: استخدام أعلام الميزات في تطبيق Spring Boot

توفر مكتبات إدارة ميزات التمهيد الأساسية Spring الدعم لتنفيذ علامات الميزة في تطبيق Spring Boot. تسمح لك هذه المكتبات بإضافة علامات المعالم إلى التعليمات البرمجية بشكل تعريفي.

كما تدير مكتبات إدارة المعالم دورات حياة علامة المعالم خلف الكواليس. على سبيل المثال، تحديث المكتبات وحالات إشارة ذاكرة التخزين المؤقت، أو ضمان حالة علامة أن تكون غير قابلة للتغيير أثناء استدعاء طلب. بالإضافة إلى ذلك، توفر مكتبة Spring Boot عمليات تكامل، بما في ذلك إجراءات وحدة تحكم MVC، والطرق، والبرامج الوسيطة.

يعرض التشغيل السريع إضافة علامات الميزات إلى تطبيق Spring Boot عدة طرق لإضافة علامات الميزات في تطبيق Spring Boot. يشرح هذا البرنامج التعليمي هذه الأساليب بمزيد من التفصيل.

في هذا البرنامج التعليمي، سوف تتعلم كيفية:

  • إضافة علامات المعالم في الأجزاء الرئيسية من التطبيق الخاص بك للتحكم في توفر الميزة.
  • يمكنك التكامل مع تكوين التطبيق عند استخدامه لإدارة إشارات المعالم.

إعداد إدارة الميزات

يحصل مدير FeatureManager ميزات Spring Boot على علامات الميزات من نظام التكوين الأصلي لإطار العمل. ونتيجة لذلك، يمكنك تعريف علامات ميزة التطبيق الخاص بك باستخدام أي مصدر تكوين يدعم Spring Boot، بما في ذلك ملف bootstrap.yml المحلي أو متغيرات البيئة. FeatureManager يعتمد على إدخال التبعية. يمكنك تسجيل خدمات إدارة الميزات باستخدام الاصطلاحات القياسية:

private FeatureManager featureManager;

public HelloController(FeatureManager featureManager) {
    this.featureManager = featureManager;
}

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

أسهل طريقة لتوصيل تطبيق Spring Boot الخاص بك بتكوين التطبيق هي من خلال موفر التكوين:

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-feature-management-web</artifactId>
</dependency>

<dependencyManagement>
    <dependencies>
        <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-dependencies</artifactId>
        <version>5.8.0</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

إعلان علامة الميزة

يحتوي كل تعريف علامة ميزة على جزأين: اسم وقائمة من عوامل التصفية واحدة أو أكثر، والتي يتم استخدامها لتقييم حالة ميزة ⁧قيد التشغيل ⁩ (أي عندما تكون قيمتها ⁧True). يحدد عامل التصفية حالة استخدام عندما يجب تشغيل ميزة.

عندما تحتوي علامة ميزة على عوامل تصفية متعددة، يتم اجتياز قائمة عوامل التصفية بالترتيب حتى يحدد أحد عوامل التصفية أنه يجب تمكين الميزة. عند هذه النقطة، تكون علامة الميزة قيد التشغيل، ويتم تخطي أي نتائج تصفية متبقية. إذا لم يشير أي عامل تصفية إلى أنه يجب تمكين الميزة، تكون علامة الميزة متوقفة عن التشغيل.

يدعم مدير الميزات application.yml كمصدر تكوين لعلامات الميزات. يوضح المثال التالي كيفية إعداد علامات المعالم في ملف YAML:

feature-management:
  feature-a: true
  feature-b: false
  feature-c:
    enabled-for:
      -
        name: PercentageFilter
        parameters:
          Value: 50

حسب الاصطلاح، feature-management يتم استخدام قسم من مستند YML هذا لإعدادات علامة الميزة. يوضح المثال السابق ثلاث علامات ميزة مع عوامل التصفية الخاصة بها المعرفة في الخاصية EnabledFor :

  • feature-aقيد التشغيل.
  • feature-b متوقف عن التشغيل.
  • feature-c يحدد عامل تصفية يسمى PercentageFilter بخاصية parameters . PercentageFilter هو عامل تصفية قابل للتكوين. في هذا المثال، PercentageFilter يحدد احتمال 50 بالمائة feature-c للعلامة التي سيتم تشغيلها.

التحقق من علامة الميزة

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

private FeatureManager featureManager;
...
if (featureManager.isEnabledAsync("feature-a").block()) {
    // Run the following code
}

إدراج التبعية

في Spring Boot، يمكنك الوصول إلى مدير FeatureManager الميزات من خلال إدخال التبعية:

@Controller
@ConfigurationProperties("controller")
public class HomeController {
    private FeatureManager featureManager;

    public HomeController(FeatureManager featureManager) {
        this.featureManager = featureManager;
    }
}

إجراءات وحدة التحكم

في وحدات تحكم MVC، يمكنك استخدام السمة @FeatureGate للتحكم في تمكين إجراء معين. يتطلب feature-a الإجراء التالي Index أن يكون قيد التشغيل قبل تشغيله:

@GetMapping("/")
@FeatureGate(feature = "feature-a")
public String index(Model model) {
    ...
}

عند حظر وحدة تحكم MVC أو إجراء بسبب إيقاف تشغيل علامة ميزة التحكم، يتم استدعاء واجهة مسجلةDisabledFeaturesHandler. ترجع الواجهة الافتراضية DisabledFeaturesHandler رمز حالة 404 إلى العميل بدون نص استجابة.

مرشحات MVC

يمكنك إعداد فلاتر MVC بحيث يتم تنشيطها استنادًا إلى حالة علامة المعالم. تضيف التعليمات البرمجية التالية عامل تصفية MVC المسمى FeatureFlagFilter. يتم تشغيل عامل التصفية هذا داخل مسار MVC فقط إذا feature-a تم تمكينه.

@Component
public class FeatureFlagFilter implements Filter {

    @Autowired
    private FeatureManager featureManager;

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        if(!featureManager.isEnabled("feature-a")) {
            chain.doFilter(request, response);
            return;
        }
        ...
        chain.doFilter(request, response);
    }
}

مسارات

يمكنك استخدام إشارات المعالم لإعادة توجيه التوجيهات. سيتم تمكين التعليمات البرمجية التالية لإعادة توجيه مستخدم منها feature-a :

@GetMapping("/redirect")
@FeatureGate(feature = "feature-a", fallback = "/getOldFeature")
public String getNewFeature() {
    // Some New Code
}

@GetMapping("/getOldFeature")
public String getOldFeature() {
    // Some New Code
}

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

في هذا البرنامج التعليمي، تعلمت كيفية تنفيذ علامات الميزات في تطبيق Spring Boot باستخدام spring-cloud-azure-feature-management-web المكتبات. لمزيد من الأسئلة، راجع الوثائق المرجعية ، فهي تحتوي على جميع التفاصيل بشأن كيفية عمل مكتبة تكوين تطبيق Spring Cloud Azure. لمزيد من المعلومات بشأن دعم إدارة الميزات في Spring Boot وتكوين التطبيق، راجع الموارد التالية: