Megosztás a következőn keresztül:


Oktatóanyag: Funkciójelzők használata Spring Boot-alkalmazásokban

A Spring Boot Core szolgáltatásfelügyeleti kódtárai támogatják a spring boot-alkalmazások funkciójelzőinek implementálását. Ezek a kódtárak lehetővé teszik a funkciójelzők deklaratív hozzáadását a kódhoz.

A szolgáltatásfelügyeleti kódtárak a funkciójelző életciklusait is kezelik a színfalak mögött. A kódtárak például frissítik és gyorsítótárazják a jelölő állapotát, vagy garantálják, hogy a jelölő állapota nem módosítható egy kéréshívás során. A Spring Boot-kódtár emellett integrációkat is kínál, beleértve az MVC vezérlőműveleteket, útvonalakat és köztes szoftvereket.

Az Add feature flags to a Spring Boot app Quickstart (Funkciójelzők hozzáadása a Spring Boot-alkalmazásokhoz– rövid útmutató ) számos módot mutat a funkciójelzők hozzáadására a Spring Boot-alkalmazásokban. Ez az oktatóanyag részletesebben ismerteti ezeket a módszereket.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • A funkció rendelkezésre állásának szabályozásához adjon hozzá funkciójelzőket az alkalmazás főbb részeihez.
  • Integrálható az Alkalmazáskonfigurációval, amikor a funkciójelzők kezelésére használja.

Funkciókezelés beállítása

A Spring Boot szolgáltatáskezelő FeatureManager a keretrendszer natív konfigurációs rendszeréből szerzi be a funkciójelzőket. Ennek eredményeképpen az alkalmazás funkciójelzőit bármely olyan konfigurációs forrás használatával definiálhatja, amelyet a Spring Boot támogat, beleértve a helyi application.yml fájl- vagy környezeti változókat is. FeatureManager függőséginjektálásra támaszkodik. A szolgáltatásfelügyeleti szolgáltatásokat standard konvenciók használatával regisztrálhatja:

private FeatureManager featureManager;

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

Javasoljuk, hogy a funkciójelzőket az alkalmazáson kívül tartsa, és külön kezelje őket. Ezzel bármikor módosíthatja a jelzőállapotokat, és azonnal érvénybe léptetheti a módosításokat az alkalmazásban. Az Alkalmazáskonfiguráció központosított helyet biztosít az összes funkciójelző rendszerezéséhez és szabályozásához egy dedikált portál felhasználói felületén keresztül. Az Alkalmazáskonfiguráció közvetlenül a Spring Boot-ügyfélkódtárakon keresztül továbbítja a jelzőket az alkalmazásnak.

A Spring Boot-alkalmazást a legegyszerűbben a konfigurációszolgáltatón keresztül csatlakoztathatja az alkalmazáskonfigurációhoz:

<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>

Funkciójelző deklarációja

Minden funkciójelző két részből áll: egy azonosítóból és egy vagy több szűrőt tartalmazó listából, amelyek alapján kiértékelhető, hogy egy funkció állapota be van-e kapcsolva (vagyis amikor az értéke True). A szűrő használati esetet határoz meg arra az esetre, ha egy funkciót be kell kapcsolni.

Ha egy funkciójelző több szűrővel rendelkezik, a szűrőlista sorrendben halad végig, amíg az egyik szűrő nem határozza meg, hogy engedélyezni kell a funkciót. Ekkor be van kapcsolva a funkciójelző, és a rendszer kihagyja a fennmaradó szűrőeredményeket. Ha nincs szűrő, amely azt jelzi, hogy a funkciót engedélyezni kell, a funkciójelző ki van kapcsolva.

A funkciókezelő támogatja a application.yml konfigurációs forrásként a funkciójelzőkhöz. Az alábbi példa bemutatja, hogyan állíthat be szolgáltatásjelzőket egy YAML-fájlban:

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

Konvenció szerint ennek az YML-dokumentumnak a feature-management szakaszát használják a funkciójelző beállításaihoz. Az előző példában három funkciójelző látható a tulajdonságban EnabledFor definiált szűrőkkel:

  • feature-a be van kapcsolva.
  • feature-b ki van kapcsolva.
  • feature-c egy tulajdonsággal elnevezett PercentageFilter szűrőt parameters ad meg. PercentageFilter egy konfigurálható szűrő. Ebben a példában PercentageFilter a jelölő feature-c50 százalékos valószínűségét adja meg.

Funkciójelző-ellenőrzések

A funkciókezelés alapvető mintája, hogy először ellenőrizze, hogy be van-e kapcsolva egy funkciójelző. Ha igen, akkor a funkciókezelő futtatja a funkció által tartalmazott műveleteket. Példa:

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

Függőséginjektálás

A Spring Bootban függőséginjektálással érheti el a funkciókezelőt FeatureManager :

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

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

Vezérlőműveletek

Az MVC-vezérlőkben az @FeatureGate attribútummal szabályozhatja, hogy egy adott művelet engedélyezve van-e. A következő Index műveletnek feature-a be kell kapcsolnia, mielőtt futtatható lenne:

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

Ha egy MVC-vezérlő vagy művelet le van tiltva, mert a vezérlő funkciójelzője ki van kapcsolva, a rendszer meghív egy regisztrált DisabledFeaturesHandler felületet. Az alapértelmezett DisabledFeaturesHandler felület egy 404-ben megadott állapotkódot ad vissza az ügyfélnek választörzs nélkül.

MVC-szűrők

Beállíthatja az MVC-szűrőket, hogy azok a funkciójelző állapota alapján aktiválódjon. Az alábbi kód egy MVC-szűrőt ad FeatureFlagFilterhozzá. Ez a szűrő csak akkor aktiválódik az MVC-folyamaton belül, ha feature-a engedélyezve van.

@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);
    }
}

Útvonalak

Az útvonalak átirányításához funkciójelzőket használhat. A következő kód átirányítja a felhasználót a rendszerből feature-a :

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

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

Következő lépések

Ebben az oktatóanyagban megtanulta, hogyan implementálhat funkciójelzőket a Spring Boot-alkalmazásban a spring-cloud-azure-feature-management-web kódtárak használatával. További kérdésekért tekintse meg a referenciadokumentációt. A referenciadokumentáció tartalmazza a Spring Cloud Azure-alkalmazáskonfigurációs kódtár működésével kapcsolatos összes részletet. A Spring Boot és az Alkalmazáskonfiguráció szolgáltatásfelügyeleti támogatásával kapcsolatos további információkért tekintse meg a következő erőforrásokat: