Sdílet prostřednictvím


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

Knihovny správy funkcí Spring Boot core poskytují podporu pro implementaci příznaků funkcí v aplikaci Spring Boot. Tyto knihovny umožňují deklarativní přidávání příznaků funkcí do kódu.

Knihovny správy funkcí také spravují životní cyklus příznaků funkcí na pozadí. Například knihovny aktualizují a ukládají stav příznaku do mezipaměti nebo zaručují neměnný stav příznaku během volání žádosti. Knihovna Spring Boot navíc nabízí integrace, včetně akcí kontroleru MVC, tras a middlewaru.

Rychlé zprovoznění aplikace Spring Boot ukazuje příznaky přidání příznaků funkcí do aplikace Spring Boot několika způsoby. Tento kurz vysvětluje tyto metody podrobněji.

V tomto kurzu se naučíte:

  • Přidejte příznaky funkcí do klíčových částí aplikace, abyste mohli řídit dostupnost funkcí.
  • Integrace se službou App Configuration, když ji používáte ke správě příznaků funkcí

Nastavení správy funkcí

Správce FeatureManager funkcí Spring Boot získá příznaky funkcí z nativního konfiguračního systému architektury. V důsledku toho 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 uchovávat příznaky funkcí mimo aplikaci a spravovat je samostatně. Tímto způsobem můžete kdykoli změnit stavy příznaků a tyto změny se projeví v aplikaci okamžitě. 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é do vaší aplikace doručuje příznaky přímo prostřednictvím klientských knihoven Spring Boot.

Nejjednodušší způsob, jak připojit aplikaci Spring Boot ke konfiguraci aplikace, je prostřednictvím zprostředkovatele konfigurace:

<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.18.0</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

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 zapnutý (to znamená, že je Truejeho hodnota). Filtr definuje případ použití, kdy má být funkce zapnutá.

Pokud má příznak funkce více filtrů, seznam filtrů se prochází v pořadí, dokud některý z filtrů nezjední, že by měla být funkce povolená. V tomto okamžiku je příznak funkce zapnutý a všechny zbývající výsledky filtru se přeskočí. Pokud žádný filtr indikuje, že by funkce měla být povolená, příznak funkce je 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-a: true
  feature-b: false
  feature-c:
    enabled-for:
      -
        name: PercentageFilter
        parameters:
          Value: 50

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

  • feature-a je zapnutý.
  • feature-b je vypnutý.
  • feature-c určuje filtr pojmenovaný PercentageFilter parameters vlastností. PercentageFilter je konfigurovatelný filtr. V tomto příkladu PercentageFilter určuje 50procentní pravděpodobnost příznaku feature-c , který má být zapnutý.

Kontroly příznaků funkcí

Základním vzorem správy funkcí je nejprve zkontrolovat, jestli je příznak funkce nastavený na zapnutý. 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í

Ve Spring Bootu máte přístup ke správci FeatureManager funkcí 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 použijete @FeatureGate atribut k řízení, zda je povolena konkrétní akce. Před spuštěním musí feature-a být tato Index akce zapnutá:

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

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

Filtry MVC

Filtry MVC můžete nastavit tak, aby byly aktivované na základě stavu příznaku funkce. Následující kód přidá filtr MVC s názvem FeatureFlagFilter. Tento filtr se aktivuje v kanálu MVC jenom v případě, že feature-a 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.isEnabled("feature-a")) {
            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 feature-a povoleného:

@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í spring-cloud-azure-feature-management-web knihoven. Další dotazy najdete v referenční dokumentaci. Referenční dokumentace obsahuje všechny podrobnosti o fungování knihovny konfigurace Spring Cloud Aplikace Azure. Další informace o podpoře správy funkcí ve Spring Bootu a konfiguraci aplikací najdete v následujících zdrojích informací: