Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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ójelzők deklaratív hozzáadását a kódhoz.
A szolgáltatásfelügyeleti kódtárak a funkciójelző életciklusait is kezelik a színfalak mögött. A kódtárak például frissítik és gyorsítótárazják a jelölő állapotát, vagy garantálják, hogy a jelölő állapota nem módosítható egy 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, útvonalakat és köztes szoftvereket.
Az Add feature flags to a Spring Boot app Quickstart (Funkciójelzők hozzáadása a Spring Boot-alkalmazásokhoz– rövid útmutató ) számos módot mutat a funkciójelzők hozzáadására a Spring Boot-alkalmazásokban. Ez az oktatóanyag részletesebben ismerteti ezeket a módszereket.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- A funkció rendelkezésre állásának szabályozásához adjon hozzá funkciójelzőket az alkalmazás főbb részeihez.
- Integrálható az Alkalmazáskonfigurációval, amikor a funkciójelző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ójelzőket. Ennek eredményeképpen az alkalmazás funkciójelzőit bármely olyan konfigurációs forrás használatával definiálhatja, amelyet a Spring Boot támogat, beleértve a helyi application.yml fájl- vagy környezeti változókat is.
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 a funkciójelzőket az alkalmazáson kívül tartsa, és külön kezelje őket. Ezzel bármikor módosíthatja a jelzőállapotokat, és azonnal érvénybe léptetheti a módosításokat az alkalmazásban. Az Alkalmazáskonfiguráció központosított helyet biztosít az összes funkciójelző rendszerezéséhez és szabályozásához egy dedikált portál felhasználói felületén keresztül. Az Alkalmazáskonfiguráció közvetlenül a Spring Boot-ügyfélkódtárakon keresztül továbbítja a jelzőket az alkalmazásnak.
A Spring Boot-alkalmazást a legegyszerűbben a konfigurációszolgáltatón keresztül csatlakoztathatja az alkalmazáskonfigurációhoz:
<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>6.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Funkciójelző deklarációja
Minden funkciójelző két részből áll: egy azonosítóból és egy vagy több szűrőt tartalmazó listából, amelyek alapján kiértékelhető, hogy egy funkció állapota be van-e kapcsolva (vagyis amikor az értéke True). A szűrő használati esetet határoz meg arra az esetre, ha egy funkciót be kell kapcsolni.
Ha egy funkciójelző több szűrővel rendelkezik, a szűrőlista sorrendben halad végig, amíg az egyik szűrő nem határozza meg, hogy engedélyezni kell 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 a funkciót engedélyezni kell, a funkciójelző ki van kapcsolva.
A funkciókezelő támogatja a application.yml konfigurációs forrásként a funkciójelzőkhöz. Az alábbi példa bemutatja, hogyan állíthat be szolgáltatásjelzőket egy YAML-fájlban:
feature-management:
feature_flags:
- id: feature-a
enabled: true
- id: feature-b
enabled: false
- id: feature-c
enabled: true
conditions:
client_filters:
- name: PercentageFilter
parameters:
Value: 50
Konvenció szerint ennek az YML-dokumentumnak a feature-management szakaszát használják a funkciójelző beállításaihoz. Az előző példában három funkciójelző látható a tulajdonságban EnabledFor definiált szűrőkkel:
-
feature-abe van kapcsolva. -
feature-bki van kapcsolva. -
feature-cegy tulajdonsággal elnevezettPercentageFilterszűrőtparametersad meg.PercentageFilteregy konfigurálható szűrő. Ebben a példábanPercentageFiltera jelölőfeature-c50 százalékos valószínűségét adja meg.
Funkciójelző-ellenőrzések
A funkciókezelés alapvető mintája, hogy először ellenőrizze, hogy be van-e kapcsolva egy funkciójelző. Ha igen, akkor a funkciókezelő futtatja a funkció által tartalmazott műveleteket. Példa:
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 az @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, mielőtt futtatható lenne:
@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 meghív egy regisztrált DisabledFeaturesHandler felületet. Az alapértelmezett DisabledFeaturesHandler felület egy 404-ben megadott állapotkódot ad vissza az ügyfélnek választörzs nélkül.
MVC-szűrők
Beállíthatja az MVC-szűrőket, hogy azok a funkciójelző állapota alapján aktiválódjon. Az alábbi kód egy MVC-szűrőt ad FeatureFlagFilterhozzá. 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ójelző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ójelző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. A referenciadokumentáció tartalmazza a Spring Cloud Azure-alkalmazáskonfigurációs kódtár működésével kapcsolatos összes részletet. A Spring Boot és az Alkalmazáskonfiguráció szolgáltatásfelügyeleti támogatásával kapcsolatos további információkért tekintse meg a következő erőforrásokat: