Aracılığıyla paylaş


Öğretici: Spring Boot uygulamasında özellik bayraklarını kullanma

Spring Boot Core Özellik Yönetimi kitaplıkları, bir Spring Boot uygulamasında özellik bayrakları uygulamak için destek sağlar. Bu kitaplıklar, kodunuza bildirimli olarak özellik bayrakları eklemenize olanak sağlar.

Özellik Yönetimi kitaplıkları, arka planda özellik bayrağı yaşam döngülerini de yönetir. Örneğin, kitaplıklar bayrak durumlarını yeniler ve önbelleğe alır veya bir bayrak durumunun istek çağrısı sırasında sabit olmasını garanti eder. Buna ek olarak, Spring Boot kitaplığı MVC denetleyici eylemleri, yollar ve ara yazılım dahil olmak üzere tümleştirmeler sunar.

Spring Boot uygulamasına özellik bayrakları ekleme Hızlı Başlangıcı, Spring Boot uygulamasına özellik bayrakları eklemenin çeşitli yollarını gösterir. Bu öğreticide bu yöntemler daha ayrıntılı olarak açıklanmaktadır.

Bu öğreticide şunların nasıl yapıldığını öğrenirsiniz:

  • Özellik kullanılabilirliğini denetlemek için uygulamanızın önemli bölümlerine özellik bayrakları ekleyin.
  • Özellik bayraklarını yönetmek için kullanırken Uygulama Yapılandırması ile tümleştirin.

Özellik yönetimini ayarlama

Spring Boot özellik yöneticisi FeatureManager , çerçevenin yerel yapılandırma sisteminden özellik bayrakları alır. Sonuç olarak, yerel bootstrap.yml dosyası veya ortam değişkenleri de dahil olmak üzere Spring Boot'un desteklediği herhangi bir yapılandırma kaynağını kullanarak uygulamanızın özellik bayraklarını tanımlayabilirsiniz. FeatureManager bağımlılık eklemeye dayanır. Standart kuralları kullanarak özellik yönetim hizmetlerini kaydedebilirsiniz:

private FeatureManager featureManager;

public HelloController(FeatureManager featureManager) {
    this.featureManager = featureManager;
}

Özellik bayraklarını uygulamanın dışında tutmanızı ve bunları ayrı olarak yönetmenizi öneririz. Bunu yapmak, bayrak durumlarını istediğiniz zaman değiştirmenize ve bu değişikliklerin uygulamada hemen geçerli olmasını sağlar. Uygulama Yapılandırması, özel portal kullanıcı arabirimi aracılığıyla tüm özellik bayraklarınızı düzenlemek ve denetlemek için merkezi bir yer sağlar. Uygulama Yapılandırması ayrıca bayrakları doğrudan Spring Boot istemci kitaplıkları aracılığıyla uygulamanıza teslim eder.

Spring Boot uygulamanızı Uygulama Yapılandırması bağlamanın en kolay yolu yapılandırma sağlayıcısından geçmektir:

<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>

Özellik bayrağı bildirimi

Her özellik bayrağının iki bölümü vardır: bir özelliğin durumunun açık olup olmadığını değerlendirmek için kullanılan bir ad ve bir veya daha fazla filtrenin listesi (yani değeri olduğunda True). Filtre, bir özelliğin ne zaman açılması gerektiğine ilişkin kullanım örneğini tanımlar.

Özellik bayrağında birden çok filtre olduğunda, filtrelerden biri özelliğin etkinleştirilmesi gerektiğini belirleyene kadar filtre listesinde sırayla geçiş yapılır. Bu noktada özellik bayrağı açık ve kalan tüm filtre sonuçları atlanır. Hiçbir filtre özelliğin etkinleştirilmesi gerektiğini gösterirse özellik bayrağı kapalıdır.

Özellik yöneticisi, özellik bayrakları için yapılandırma kaynağı olarak application.yml'yi destekler. Aşağıdaki örnekte YAML dosyasında özellik bayraklarının nasıl ayarlanacağı gösterilmektedir:

feature-management:
  feature-a: true
  feature-b: false
  feature-c:
    enabled-for:
      -
        name: PercentageFilter
        parameters:
          Value: 50

Kural gereği, feature-management bu YML belgesinin bölümü özellik bayrağı ayarları için kullanılır. Önceki örnekte, filtrelerinin özelliğinde tanımlandığı üç özellik bayrağı gösterilmektedir EnabledFor :

  • feature-a açık.
  • feature-b kapalıdır.
  • feature-c özelliğiyle adlı PercentageFilter bir parameters filtre belirtir. PercentageFilter yapılandırılabilir bir filtredir. Bu örnekte bayrağın PercentageFilteraçık olması için feature-c yüzde 50 olasılık belirtir.

Özellik bayrağı denetimleri

Özellik yönetiminin temel deseni, önce bir özellik bayrağının açık olarak ayarlı olup olmadığını denetlemektir. Öyleyse, özellik yöneticisi özelliğin içerdiği eylemleri çalıştırır. Örneğin:

private FeatureManager featureManager;
...
if (featureManager.isEnabledAsync("feature-a").block()) {
    // Run the following code
}

Bağımlılık ekleme

Spring Boot'ta bağımlılık ekleme yoluyla özellik yöneticisine FeatureManager erişebilirsiniz:

@Controller
@ConfigurationProperties("controller")
public class HomeController {
    private FeatureManager featureManager;

    public HomeController(FeatureManager featureManager) {
        this.featureManager = featureManager;
    }
}

Denetleyici eylemleri

MVC denetleyicilerinde, belirli bir eylemin @FeatureGate etkinleştirilip etkinleştirilmediğini denetlemek için özniteliğini kullanırsınız. Aşağıdaki Index eylemin feature-a çalıştırılabilmesi için önce açık olması gerekir:

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

Denetim özelliği bayrağı kapalı olduğu için bir MVC denetleyicisi veya eylemi engellendiğinde, kayıtlı DisabledFeaturesHandler bir arabirim çağrılır. Varsayılan DisabledFeaturesHandler arabirim, istemciye yanıt gövdesi olmayan bir 404 durum kodu döndürür.

MVC filtreleri

Özellik bayrağının durumuna göre etkinleştirilmeleri için MVC filtreleri ayarlayabilirsiniz. Aşağıdaki kod adlı FeatureFlagFilterbir MVC filtresi ekler. Bu filtre MVC işlem hattı içinde yalnızca feature-a etkinleştirildiğinde tetikleniyor.

@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);
    }
}

Yollar

Yolları yeniden yönlendirmek için özellik bayraklarını kullanabilirsiniz. Aşağıdaki kod, bir kullanıcıyı şu kaynaktan feature-a yönlendirecektir:

@GetMapping("/redirect")
@FeatureGate(feature = "feature-a", fallback = "/getOldFeature")
public String getNewFeature() {
    // Some New Code
}

@GetMapping("/getOldFeature")
public String getOldFeature() {
    // Some New Code
}

Sonraki adımlar

Bu öğreticide, kitaplıkları kullanarak spring-cloud-azure-feature-management-web Spring Boot uygulamanızda özellik bayraklarını uygulamayı öğrendiniz. Daha fazla soru için, Spring Cloud Azure Uygulama Yapılandırması kitaplığının nasıl çalıştığına ilişkin tüm ayrıntıları içeren başvuru belgelerine bakın. Spring Boot ve Uygulama Yapılandırması özellik yönetimi desteği hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın: