How duymk123/feature-flag-lib works
This is a Spring Boot feature-flag library for microservices. An application calls the fail-safe client, or marks a method with @RequireFeature; the library evaluates the flag locally using a captured user/request context and applicable strategies, avoiding database reads on the hot path. It also documents local snapshot persistence and synchronization from a central admin service. The graph follows README-documented relationships; source excerpts were unavailable, so implementation details and unshown call ownership are not inferred.
Main entry points: EvaluationStrategy.java Strategy Interface · FeatureFlagConfigServiceImpl.java Config Service · FeatureFlagClient.java Flag Client · FeatureFlagAspect.java Feature Aspect
Components 19
Application Integration
- Feature Aspect
src/main/java/com/example/featureflag/aspect/FeatureFlagAspect.java - Feature Annotations
src/main/java/com/example/featureflag/annotation/RequireFeature.java - Flag Client
src/main/java/com/example/featureflag/client/FeatureFlagClient.java - Auto Configuration
src/main/java/com/example/featureflag/config/FeatureFlagAutoConfiguration.java
Flag Evaluation
- Config Service
src/main/java/com/example/featureflag/service/impl/FeatureFlagConfigServiceImpl.java - Service Interface
src/main/java/com/example/featureflag/service/FeatureFlagConfigService.java - Evaluation Context
src/main/java/com/example/featureflag/strategy/EvaluationContext.java - Evaluation Pool
src/main/java/com/example/featureflag/config/FeatureFlagAutoConfiguration.java
Evaluation Strategies
- Strategy Interface
src/main/java/com/example/featureflag/strategy/EvaluationStrategy.java - Username Strategy
src/main/java/com/example/featureflag/strategy/impl/UsernameStrategy.java - User Role Strategy
src/main/java/com/example/featureflag/strategy/impl/UserRoleStrategy.java - Client IP Strategy
src/main/java/com/example/featureflag/strategy/impl/ClientIpStrategy.java - Release Date Strategy
src/main/java/com/example/featureflag/strategy/impl/ReleaseDateStrategy.java - Gradual Rollout Strategy
src/main/java/com/example/featureflag/strategy/impl/GradualRolloutStrategy.java
Snapshot Synchronization
- Sync Request DTOs
src/main/java/com/example/featureflag/dto/FeatureFlagSyncRequest.java
Local Persistence
- Config Repository
src/main/java/com/example/featureflag/repository/FeatureFlagConfigRepo.java - Flag Config Entity
src/main/java/com/example/featureflag/entity/FeatureFlagConfig.java
Other components
- Microservice
- Central Admin
Connections 19
- Microservice → Feature Annotations: marks methods
README.md - Feature Annotations → Feature Aspect: intercepts via
README.md - Feature Aspect → Flag Client: checks through
README.md - Microservice → Flag Client: checks flags
README.md - Flag Client → Service Interface: delegates to
README.md - Service Interface → Config Service: implemented by
README.md - Config Service → Evaluation Context: captures context
README.md - Config Service → Evaluation Pool: evaluates concurrently
README.md - Auto Configuration → Evaluation Pool: provides
README.md - Config Service → Strategy Interface: evaluates strategies
README.md - Strategy Interface → Username Strategy: implemented by
README.md - Strategy Interface → User Role Strategy: implemented by
README.md - Strategy Interface → Client IP Strategy: implemented by
README.md - Strategy Interface → Release Date Strategy: implemented by
README.md - Strategy Interface → Gradual Rollout Strategy: implemented by
README.md - Central Admin → Sync Request DTOs: sends snapshots
README.md - Sync Request DTOs → Config Service: synchronizes flags
- Config Service → Config Repository: persists snapshots
README.md - Config Repository → Flag Config Entity: stores configs
README.md