How to Connect to OpenFeature¶
Bridge FlagZen to any OpenFeature-compatible flag management service.
Goal¶
Use LaunchDarkly, Flagd, Split, or any OpenFeature provider as your FlagZen flag source.
Prerequisites¶
- FlagZen basics:
@Feature,@Variant,FeatureDispatcher - OpenFeature SDK 1.12.0+
- An OpenFeature provider configured (e.g., Flagd, LaunchDarkly)
Steps¶
1. Add the dependency¶
dependencies {
implementation("com.flagzen:flagzen-openfeature:1.1.0")
implementation("dev.openfeature:sdk:1.12.0")
// Plus your OpenFeature provider:
implementation("dev.openfeature.contrib.providers:flagd:0.9.0")
}
2. Configure OpenFeature with your provider¶
Set up OpenFeature with your chosen backend (example uses Flagd):
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
api.setProviderAndWait(new FlagdProvider("http://localhost:8013"));
3. Bridge to FlagZen¶
Get an OpenFeature Client and wrap it with OpenFeatureFlagProvider:
Client client = api.getClient();
FlagProvider provider = new OpenFeatureFlagProvider(client);
FeatureDispatcher dispatcher = FeatureDispatcher.withProvider(provider);
CheckoutFlow flow = dispatcher.resolve(CheckoutFlow.class);
4. Use a named OpenFeature client (optional)¶
OpenFeature supports multiple named clients. Create a provider for a specific one:
Client paymentsClient = OpenFeatureAPI.getInstance().getClient("payments");
FlagProvider provider = OpenFeatureFlagProvider.create(paymentsClient);
5. Resolve flags with evaluation context (optional)¶
Pass targeting context (user ID, attributes) for personalized flag resolution:
EvaluationContext context = EvaluationContext.builder()
.targetingKey("user-7291")
.attribute("plan", "enterprise")
.build();
FlagProvider provider = OpenFeatureFlagProvider.create(client);
Optional<String> value = provider.getString("checkout-flow", context);
The adapter automatically maps FlagZen EvaluationContext to OpenFeature context.
6. Use with Spring Boot (optional)¶
Define the provider as a Spring bean:
@Configuration
public class FlagsConfig {
@Bean
public FlagProvider flagProvider() {
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
api.setProviderAndWait(new FlagdProvider("http://localhost:8013"));
Client client = api.getClient();
return OpenFeatureFlagProvider.create(client);
}
}
Spring auto-configuration detects it and registers all @Feature proxies as beans.
Result¶
FlagZen dispatches to variants based on flags from your OpenFeature backend. Type-safe dispatch, dynamic flag updates, and no string comparisons.
See Also¶
- Reference: OpenFeatureFlagProvider — adapter API
- How-to: Evaluation Context — targeted flag resolution
- How-to: Spring Boot Integration — register proxies as beans
- How-to: Custom Provider — implement your own flag source