Kurz: Použití příznaků funkcí v Spring Boot aplikaci

Knihovny Spring Boot Core Feature Management poskytují podporu pro implementaci příznaků funkcí v Spring Boot aplikaci. Tyto knihovny umožňují deklarativně přidat do kódu příznaky funkcí.

Knihovny Pro správu funkcí také spravují životní cykly příznaků funkcí na pozadí. Knihovny například aktualizují stavy příznaků mezipaměti nebo zaručují, že stav příznaku bude neměnný během volání požadavku. Kromě toho knihovna Spring Boot integraci, včetně akcí, tras a middlewaru kontroleru MVC.

Rychlý start Pro přidání příznaků funkcí do Spring Boot aplikace ukazuje několik způsobů přidání příznaků funkcí do Spring Boot aplikace. Tento kurz vysvětluje tyto metody podrobněji.

V tomto kurzu se naučíte, jak:

  • Přidání příznaků funkcí do klíčových částí aplikace pro řízení dostupnosti funkcí
  • Integrace s App Configuration, když ho používáte ke správě příznaků funkcí.

Nastavení správy funkcí

Správce Spring Boot funkcí získá příznaky funkcí z nativního konfiguračního systému FeatureManager architektury. Díky tomu můžete definovat příznaky funkcí aplikace pomocí libovolného zdroje konfigurace, který Spring Boot podporuje, včetně místního souboru bootstrap.yml nebo proměnných prostředí. FeatureManager spoléhá na injektáž závislostí. Služby správy funkcí můžete zaregistrovat pomocí standardních konvencí:

private FeatureManager featureManager;

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

Doporučujeme ponechat příznaky funkcí mimo aplikaci a spravovat je samostatně. To vám umožní kdykoli upravit stavy příznaků a tyto změny se projeví v aplikaci hned. App Configuration poskytuje centralizované místo pro uspořádání a řízení všech příznaků funkcí prostřednictvím vyhrazeného uživatelského rozhraní portálu. App Configuration také doručuje příznaky do vaší aplikace přímo prostřednictvím jejích klientských Spring Boot knihoven.

Nejjednodušší způsob, jak připojit Spring Boot aplikaci k App Configuration, je prostřednictvím poskytovatele konfigurace:

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

Poznámka

Pokud potřebujete podporovat starší verzi nástroje , Spring Boot naši starou knihovnu.

Deklarace příznaku funkce

Každý příznak funkce má dvě části: název a seznam jednoho nebo více filtrů, které se používají k vyhodnocení, jestli je stav funkce ve stavu (to znamená, když má hodnotu True ). Filtr definuje případ použití, kdy se má funkce zapnout.

Pokud má příznak funkce více filtrů, seznam filtrů se prochová v pořadí, dokud jeden z filtrů nesnídá, že má být funkce povolená. V tomto okamžiku je příznak funkce u a všechny zbývající výsledky filtru se přeskočí. Pokud žádný filtr neznačí, že by měla být funkce povolená, je příznak funkce vypnutý.

Správce funkcí podporuje application.yml jako zdroj konfigurace pro příznaky funkcí. Následující příklad ukazuje, jak nastavit příznaky funkcí v souboru YAML:

feature-management:
  feature-set:
    feature-a: true
    feature-b: false
    feature-c:
      enabled-for:
        -
          name: Percentage
          parameters:
            value: 50

Podle konvence se feature-management část tohoto dokumentu YML používá pro nastavení příznaků funkcí. Předchozí příklad ukazuje tři příznaky funkcí s jejich filtry definovanými ve EnabledFor vlastnosti :

  • feature-aje na .
  • feature-bje vypnutá.
  • feature-c určuje filtr s názvem Percentage s parameters vlastností . Percentage je konfigurovatelný filtr. V tomto Percentage příkladu určuje 50% pravděpodobnost, že feature-c příznak bude na.

Kontroly příznaků funkcí

Základním vzorem správy funkcí je nejprve zkontrolovat, jestli je příznak funkce nastavený na hodnotu na . Pokud ano, správce funkcí pak spustí akce, které tato funkce obsahuje. Příklad:

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

Injektáž závislostí

V Spring Boot můžete získat přístup ke správci funkcí FeatureManager prostřednictvím injektáže závislostí:

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

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

Akce kontroleru

V řadičích MVC můžete pomocí @FeatureGate atributu řídit, jestli je konkrétní akce povolená. Před spuštěním musí být tato akce Index feature-a spuštěná:

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

Když je kontroler nebo akce MVC blokovaná, protože příznak řídicí funkce je vypnutý, volá IDisabledFeaturesHandler se zaregistrované rozhraní. Výchozí rozhraní vrátí klientovi stavový kód IDisabledFeaturesHandler 404 bez textu odpovědi.

Filtry MVC

Filtry MVC můžete nastavit tak, aby se aktivovali na základě stavu příznaku funkce. Následující kód přidá filtr MVC s názvem FeatureFlagFilter . Tento filtr se v rámci kanálu MVC aktivuje jenom v feature-a případě, že je povolený.

@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.isEnabledAsync("feature-a").block()) {
            chain.doFilter(request, response);
            return;
        }
        ...
        chain.doFilter(request, response);
    }
}

Trasy

K přesměrování tras můžete použít příznaky funkcí. Následující kód přesměruje uživatele z je feature-a povoleno:

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

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

Další kroky

V tomto kurzu jste zjistili, jak implementovat příznaky funkcí v aplikaci Spring Boot pomocí azure-spring-cloud-feature-management-web knihoven . Další informace o podpoře správy funkcí v Spring Boot a App Configuration najdete v následujících zdrojích informací: