Kurz: Použití příznaků funkcí v aplikaci Spring Boot
Knihovny Spring Boot Core Feature Management 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říznaku funkcí na pozadí. Knihovny například aktualizují a ukládají do mezipaměti stavy příznaku nebo zaručují, že stav příznaku bude během volání žádosti neměnný. Knihovna Spring Boot navíc nabízí integrace, včetně akcí kontroleru MVC, tras a middlewaru.
Rychlý start Přidání příznaků funkcí do aplikace Spring Boot ukazuje několik způsobů přidání příznaků funkcí do aplikace Spring Boot. Tento kurz vysvětluje tyto metody podrobněji.
V tomto kurzu se naučíte, jak:
- Přidejte příznaky funkcí do klíčových částí aplikace, abyste mohli řídit dostupnost funkcí.
- Integrujte s 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í vaší 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
závisí na injektáži 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ě. To vám umožní kdykoli změnit stavy příznaku 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é doručuje příznaky vaší aplikaci přímo prostřednictvím svých klientských knihoven Spring Boot.
Nejjednodušší způsob, jak připojit aplikaci Spring Boot k App Configuration, je prostřednictvím poskytovatele 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.8.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á, když je True
její 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 jeden z filtrů nerozhodne, že by měla být funkce povolena. V tomto okamžiku je příznak funkce zapnutý a všechny zbývající výsledky filtru se přeskočí. Pokud žádný filtr nenaznačuje, že by funkce měla být 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-a: true
feature-b: false
feature-c:
enabled-for:
-
name: PercentageFilter
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 EnabledFor
ve vlastnosti:
feature-a
je zapnuté.feature-b
je vypnutý.feature-c
určuje filtr s názvemPercentageFilter
sparameters
vlastností.PercentageFilter
je konfigurovatelný filtr. V tomto příkladuPercentageFilter
určuje 50procentní pravděpodobnost, žefeature-c
příznak bude zapnutý.
Kontroly příznaku funkce
Základním vzorem správy funkcí je nejprve zkontrolovat, jestli je příznak funkce nastavený na zapnuto. Pokud ano, správce funkcí pak spustí akce, které 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 můžete pomocí atributu @FeatureGate
určit, jestli je povolená konkrétní akce. Před spuštěním musí feature-a
být zapnutá následující Index
akce:
@GetMapping("/")
@FeatureGate(feature = "feature-a")
public String index(Model model) {
...
}
Pokud je kontroler nebo akce MVC zablokovaná, protože je vypnutý příznak řídicí funkce, je voláno 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 pouze 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
je 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í spring-cloud-azure-feature-management-web
knihoven. Další dotazy najdete v referenční dokumentaci, kde najdete všechny podrobnosti o tom, jak knihovna Spring Cloud Azure App Configuration funguje. Další informace o podpoře správy funkcí ve Spring Bootu a App Configuration najdete v následujících zdrojích informací: