Oktatóanyag: Funkciójelölő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ójelölők deklaratív hozzáadását a kódhoz.
A Funkciókezelési kódtárak a színfalak mögött is kezelik a funkciójelölő életciklusát. A kódtárak például frissítik és gyorsítótárazza a jelző állapotát, vagy garantálják, hogy a jelölő állapota nem módosítható a 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, az útvonalakat és a köztes szoftvereket.
Az Add feature flags to a Spring Boot app (Funkciójelölők hozzáadása Spring Boot-alkalmazáshoz) rövid útmutató számos módszert mutat be a funkciójelölők Spring Boot-alkalmazásokban való hozzáadására. Ez az oktatóanyag részletesebben ismerteti ezeket a módszereket.
Az oktatóanyag során a következőket fogja elsajátítani:
- A funkció rendelkezésre állásának szabályozásához adjon hozzá funkciójelölőket az alkalmazás fő részeihez.
- Integrálható App Configuration, amikor funkciójelölő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ójelölőket. Ennek eredményeképpen az alkalmazás funkciójelölőit bármely olyan konfigurációs forrás használatával definiálhatja, amelyet a Spring Boot támogat, beleértve a helyi bootstrap.yml fájlt vagy környezeti változókat. 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 tartsa meg a funkciójelölőket az alkalmazáson kívül, és külön kezelje őket. Ezzel bármikor módosíthatja a jelzőállapotokat, és azonnal érvénybe léptetheti ezeket a módosításokat az alkalmazásban. App Configuration egy központi helyet biztosít az összes funkciójelölő rendszerezéséhez és szabályozásához egy dedikált portál felhasználói felületén keresztül. App Configuration közvetlenül a Spring Boot-ügyfélkódtárakon keresztül kézbesíti a jelzőket az alkalmazásnak.
A Spring Boot-alkalmazást a legegyszerűbben a konfigurációszolgáltatón keresztül csatlakoztathatja App Configuration:
<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>
Funkciójelölő deklarációja
Minden funkciójelölő két részből áll: egy névből és egy vagy több szűrőből álló listából, amelyek annak kiértékelésére szolgálnak, hogy egy szolgáltatás állapota be van-e kapcsolva (azaz ha az True
értéke ). A szűrő használati esetet határoz meg arra vonatkozóan, hogy mikor kell bekapcsolni egy funkciót.
Ha egy funkciójelölő több szűrővel rendelkezik, a rendszer addig halad végig a szűrőlistán, amíg az egyik szűrő nem határozza meg, hogy engedélyezni kell-e 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 engedélyezni kell a funkciót, a funkciójelölő ki van kapcsolva.
A funkciókezelő támogatja az application.yml konfigurációs forrást a funkciójelölőkhöz. Az alábbi példa bemutatja, hogyan állíthat be funkciójelölőket egy YAML-fájlban:
feature-management:
feature-a: true
feature-b: false
feature-c:
enabled-for:
-
name: PercentageFilter
parameters:
Value: 50
Az YML-dokumentum szakasza konvenció feature-management
szerint a funkciójelölő beállításaihoz használatos. Az előző példában három funkciójelölő látható a tulajdonságban EnabledFor
definiált szűrőkkel:
feature-a
be van kapcsolva.feature-b
ki van kapcsolva.feature-c
egy nevű szűrőtPercentageFilter
határoz meg egyparameters
tulajdonsággal.PercentageFilter
egy konfigurálható szűrő. Ebben a példábanPercentageFilter
a jelölő 50%-os valószínűségétfeature-c
adja meg.
Funkciójelölő-ellenőrzések
A funkciókezelés alapvető mintája, hogy először ellenőrizze, hogy be van-e kapcsolva egy funkciójelölő. Ha igen, akkor a funkciókezelő futtatja a funkció által tartalmazott műveleteket. Például:
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 a @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 a futtatását:
@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 egy regisztrált DisabledFeaturesHandler
felületet hív meg. Az alapértelmezett DisabledFeaturesHandler
interfész egy 404-es állapotkódot ad vissza az ügyfélnek választörzs nélkül.
MVC-szűrők
Az MVC-szűrőket beállíthatja úgy, hogy azok a funkciójelölő állapota alapján legyenek aktiválva. Az alábbi kód egy nevű FeatureFlagFilter
MVC-szűrőt ad hozzá. 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ójelölő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ójelölő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, amely tartalmazza a Spring Cloud Azure App Configuration kódtár működésével kapcsolatos összes részletet. A Spring Boot és a App Configuration szolgáltatásfelügyeleti támogatásával kapcsolatos további információkért tekintse meg az alábbi forrásanyagokat: