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 True
jeho 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říkladuPercentageFilter
určuje 50procentní pravděpodobnost příznakufeature-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í: