مشاركة عبر


بدء التشغيل السريع: إضافة إشارات الميزات إلى تطبيق Spring Boot

في بدء التشغيل السريع، يمكنك دمج Azure App Configuration في تطبيق ويب Spring Boot لإنشاء تطبيق شامل لإدارة الميزات. يمكنك استخدام App Configuration لتخزين جميع علامات الميزات الخاصة بك مركزيا والتحكم في حالاتها.

توسع مكتبات Spring Boot Feature Management الإطار مع دعم علامة الميزات الشاملة. لا تعتمد هذه المكتبات على أي مكتبات Azure. كما أنها تتكامل بسلاسة مع App Configuration من خلال مزود تكوين Spring Boot الخاص بها.

المتطلبات الأساسية

إضافة علامة ميزة

أضف علامة ميزة تسمى Beta إلى متجر App Configuration واترك Label and Description بقيمها الافتراضية. لمزيد من المعلومات حول كيفية إضافة علامات الميزات إلى متجر باستخدام مدخل Microsoft Azure أو CLI، انتقل إلى إنشاء علامة ميزة.

تفعيل علامة الميزة المسماة Beta

إنشاء تطبيق Spring Boot

لإنشاء مشروع Spring Boot جديد:

  1. استعرض للوصول إلى Spring Initializr.

  2. حدد الخيارات التالية:

    • إنشاء مشروع Maven باستخدام Java.
    • حدد إصدار Spring Boot الذي يساوي أو أكبر من 2.0.
    • حدد أسماء المجموعة والبيانات الاصطناعية للتطبيق الخاص بك. تستخدم com.example هذه المقالة و demo.
    • أضف تبعية Spring Web.
  3. بعد تحديد الخيارات السابقة، حدد إنشاء مشروع. قم بتنزيل المشروع إلى الكمبيوتر المحلي عندما يُطلب منك ذلك.

أضف إدارة الميزات

  1. بعد استخراج الملفات على نظامك المحلي، يكون تطبيق Spring Boot الخاص بك جاهزًا للتحرير. حدد موقع pom.xml في الدليل الجذري لتطبيقك.

  2. افتح ملف pom.xml في محرر نص وأضف ما يلي إلى قائمة <dependencies>:

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-appconfiguration-config-web</artifactId>
</dependency>
<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-feature-management-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</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>

إشعار

  • هناك مكتبة إدارة ميزات غير تابعة للويب لا تعتمد على spring-web. راجع وثائق GitHub لمعرفة الاختلافات.

الاتصال بمخزن تكوين التطبيق

  1. انتقل إلى resources دليل التطبيق وافتح bootstrap.properties الملف أو bootstrap.yaml . إذا لم يكن الملف موجودًا، قم بإنشائه.

    يمكنك الاتصال بمخزن App Configuration باستخدام معرف Microsoft Entra (مستحسن) أو سلسلة الاتصال.

    1. تحديث ملفات التكوين الخاصة بك.

      إذا كنت تستخدم ملف خصائص، فاستخدم التعليمات البرمجية التالية:

      spring.config.import=azureAppConfiguration
      spring.cloud.azure.appconfiguration.stores[0].endpoint= ${APP_CONFIGURATION_ENDPOINT}
      spring.cloud.azure.appconfiguration.stores[0].feature-flags.enabled=true
      

      إذا كنت تستخدم ملف yaml، فاستخدم التعليمات البرمجية التالية:

      spring:
        config:
          import: azureAppConfiguration
        cloud:
          azure:
            appconfiguration:
              stores:
                  -
                  feature-flags:
                      enabled: true
                  endpoint: ${APP_CONFIGURATION_ENDPOINT}
      

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

    2. أضف التعليمات البرمجية التالية إلى مشروعك، إلا إذا كنت تريد استخدام الهوية المدارة. إنشاء ملف جديد باسم AppConfigCredential.java:

      import com.azure.data.appconfiguration.ConfigurationClientBuilder;
      import com.azure.identity.DefaultAzureCredentialBuilder;
      import com.azure.spring.cloud.appconfiguration.config.ConfigurationClientCustomizer;
      
      public class AppConfigCredential implements ConfigurationClientCustomizer {
      
          @Override
          public void customize(ConfigurationClientBuilder builder, String endpoint) {
              builder.credential(new DefaultAzureCredentialBuilder().build());
          }
      }
      
    3. أنشئ ملفا جديدا باسم MyConfiguration.java وأضف الأسطر التالية:

      import org.springframework.context.annotation.Bean;
      import org.springframework.context.annotation.Configuration;
      
      @Configuration
      public class MyConfiguration {
      
      
          @Bean
          public AppConfigCredential clientSetup() {
              return new AppConfigCredential();
          }
      
      }
      
    4. إضافة تكوين Bootstrap Configuration، عن طريق إنشاء spring.factories ملف ضمن resources/META-INF الدليل وإضافة الأسطر التالية والتحديث com.example.MyConfiguration مع حزمة التطبيق الخاص بك:

      org.springframework.cloud.bootstrap.BootstrapConfiguration=\
      com.example.MyConfiguration
      
  2. أنشئ ملف Java جديدا باسم HelloController.java في دليل حزمة التطبيق الخاص بك.

    package com.example.demo;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
    
    import com.azure.spring.cloud.feature.management.FeatureManager;
    
    
    @Controller
    public class HelloController {
    
        @Autowired
        private FeatureManager featureManager;
    
        @GetMapping("/welcome")
        public String mainWithParam(Model model) {
            model.addAttribute("Beta", featureManager.isEnabled("Beta"));
            return "welcome";
        }
    }
    
  3. أنشئ ملف HTML جديدا باسم welcome.html في دليل القوالب لتطبيقك.

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <title>Feature Management with Spring Cloud Azure</title>
    
        <link rel="stylesheet" href="/css/main.css">
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    
        <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
        <script src="https://unpkg.com/@popperjs/core@2"></script>
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
    
    </head>
    <body>
        <header>
        <!-- Fixed navbar -->
        <nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
            <a class="navbar-brand" href="#">TestFeatureFlags</a>
            <button class="navbar-toggler" aria-expanded="false" aria-controls="navbarCollapse" aria-label="Toggle navigation" type="button" data-target="#navbarCollapse" data-toggle="collapse">
            <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarCollapse">
            <ul class="navbar-nav mr-auto">
                <li class="nav-item active">
                <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item" th:if="${Beta}">
                <a class="nav-link" href="#">Beta</a>
                </li>
                <li class="nav-item">
                <a class="nav-link" href="#">Privacy</a>
                </li>
            </ul>
            </div>
        </nav>
        </header>
        <div class="container body-content">
            <h1 class="mt-5">Welcome</h1>
            <p>Learn more about <a href="https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/spring/spring-cloud-azure-feature-management/README.md">Feature Management with Spring Cloud Azure</a></p>
    
        </div>
        <footer class="footer">
            <div class="container">
            <span class="text-muted">&copy; 2019 - Projects</span>
        </div>
    
        </footer>
    </body>
    </html>
    
    
  4. أنشئ مجلدا جديدا باسم CSS ضمنه static وداخله ملف CSS جديدا يسمى main.css.

    html {
     position: relative;
     min-height: 100%;
    }
    body {
     margin-bottom: 60px;
    }
    .footer {
     position: absolute;
     bottom: 0;
     width: 100%;
     height: 60px;
     line-height: 60px;
     background-color: #f5f5f5;
    }
    
    body > .container {
     padding: 60px 15px 0;
    }
    
    .footer > .container {
     padding-right: 15px;
     padding-left: 15px;
    }
    
    code {
     font-size: 80%;
    }
    

يوصى بإنشاء التطبيق وتشغيله محليًا

  1. تعيين متغير بيئة.

    قم بتعيين متغير البيئة المسمى APP_CONFIGURATION_ENDPOINT إلى نقطة نهاية متجر App Configuration الموجود ضمن نظرة عامة على متجرك في مدخل Microsoft Azure.

    إذا كنت تستخدم موجه الأوامر Windows، فشغل الأمر التالي، ثم أعد تشغيل موجه الأوامر للسماح للتغيير بتنفيذ الأمر:

    setx APP_CONFIGURATION_ENDPOINT "endpoint-of-your-app-configuration-store"
    

    إذا كنت تستخدم PowerShell، فقم بتشغيل الأمر التالي:

    $Env:APP_CONFIGURATION_ENDPOINT = "<endpoint-of-your-app-configuration-store>"
    

    إذا كنت تستخدم macOS أو Linux، فقم بإجراء الأمر التالي:

    export APP_CONFIGURATION_ENDPOINT='<endpoint-of-your-app-configuration-store>'
    

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


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

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

    تُظهر لقطة الشاشة نافذة مُتصفح مع رسالة ترحيب.

  4. في مدخل App Configuration، حدد Feature Manager، وغير حالة مفتاح Beta إلى On:

    مفتاح المنطقة
    الإصدار بيتا تشغيل
  5. قم بتحديث صفحة المتصفح لرؤية إعدادات التكوين الجديدة.

    تظهر لقطة الشاشة نافذة متصفح مع رسالة ترحيب، ورابط Beta المُستدعى.

تنظيف الموارد

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

هام

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

  1. سجل الدخول إلى مدخل Microsoft Azure، وحدد Resource groups.
  2. في المربع تصفية حسب الاسم ، أدخل اسم مجموعة الموارد الخاصة بك.
  3. في قائمة النتائج، حدد اسم مجموعة الموارد لاستعراض نظرة عامة.
  4. حدد Delete resource group.
  5. يُطلب منك تأكيد حذف مجموعة الموارد. أدخل اسم مجموعة الموارد للتأكيد وحدد "Delete".

بعد بضع لحظات، يتم حذف مجموعة الموارد وكافة مواردها.

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

في هذا التشغيل السريع، قمت بإنشاء متجر App Configuration جديد واستخدامه لإدارة الميزات في تطبيق ويب Spring Boot عبر مكتبات إدارة الميزات.