مشاركة عبر


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

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

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

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

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

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

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

يحصل مدير FeatureManager ميزات Spring Boot على علامات الميزات من نظام التكوين الأصلي لإطار العمل. ونتيجة لذلك، يمكنك تحديد علامات ميزات التطبيق باستخدام أي مصدر تكوين يدعمه Spring Boot، بما في ذلك ملف application.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>6.0.0</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

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

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

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

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

feature-management:
  feature_flags:
  - id: feature-a
    enabled: true
  - id: feature-b
    enabled: false
  - id: feature-c
    enabled: true
    conditions:
      client_filters:
      - 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 للتحكم في تمكين إجراء معين. يتطلب Index الإجراء التالي feature-a أن يكون قيد التشغيل قبل تشغيله:

@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 وتكوين التطبيق، راجع الموارد التالية: