Class EvictionStrategyFactory
- java.lang.Object
-
- io.github.dhruv1110.jcachex.spring.utilities.EvictionStrategyFactory
-
public class EvictionStrategyFactory extends Object
Factory for creating eviction strategies from string configuration values. This factory provides a bridge between Spring's string-based configuration and JCacheX's programmatic eviction strategy configuration. It supports all built-in eviction strategies and can be extended for custom strategies.Supported Strategies:
- LRU: Least Recently Used (default)
- LFU: Least Frequently Used
- FIFO: First In, First Out
- FILO: First In, Last Out
- IDLE_TIME: Based on idle time
- WEIGHT: Based on entry weight
- COMPOSITE: Combines multiple strategies
Usage Examples:
In Configuration:
jcachex: caches: users: evictionStrategy: LRU sessions: evictionStrategy: LFU files: evictionStrategy: WEIGHT maximumWeight: 10485760 # 10MB
Programmatic Usage:
EvictionStrategyFactory factory = new EvictionStrategyFactory(); EvictionStrategy<String, User> lruStrategy = factory.createStrategy("LRU"); EvictionStrategy<String, byte[]> weightStrategy = factory.createStrategy("WEIGHT");
- Since:
- 1.0.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interface
EvictionStrategyFactory.StrategyProvider
Functional interface for creating eviction strategies.
-
Constructor Summary
Constructors Constructor Description EvictionStrategyFactory()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <K,V>
io.github.dhruv1110.jcachex.eviction.EvictionStrategy<K,V>createStrategy(String strategyName)
Creates an eviction strategy from a string configuration using default config.<K,V>
io.github.dhruv1110.jcachex.eviction.EvictionStrategy<K,V>createStrategy(String strategyName, JCacheXProperties.CacheConfig config)
Creates an eviction strategy from a string configuration.Set<String>
getAvailableStrategies()
Gets all registered strategy names.void
registerStrategy(String name, EvictionStrategyFactory.StrategyProvider provider)
Registers a custom eviction strategy.
-
-
-
Method Detail
-
createStrategy
public <K,V> io.github.dhruv1110.jcachex.eviction.EvictionStrategy<K,V> createStrategy(String strategyName, JCacheXProperties.CacheConfig config)
Creates an eviction strategy from a string configuration.- Parameters:
strategyName
- the name of the eviction strategy (case-insensitive)config
- optional cache configuration for strategy customization- Returns:
- the created eviction strategy
- Throws:
IllegalArgumentException
- if the strategy name is not recognized
-
createStrategy
public <K,V> io.github.dhruv1110.jcachex.eviction.EvictionStrategy<K,V> createStrategy(String strategyName)
Creates an eviction strategy from a string configuration using default config.- Parameters:
strategyName
- the name of the eviction strategy (case-insensitive)- Returns:
- the created eviction strategy
- Throws:
IllegalArgumentException
- if the strategy name is not recognized
-
registerStrategy
public void registerStrategy(String name, EvictionStrategyFactory.StrategyProvider provider)
Registers a custom eviction strategy.- Parameters:
name
- the strategy name (case-insensitive)provider
- the strategy provider function
-
-