Class 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
    • Constructor Detail

      • EvictionStrategyFactory

        public EvictionStrategyFactory()
    • 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
      • getAvailableStrategies

        public Set<String> getAvailableStrategies()
        Gets all registered strategy names.
        Returns:
        set of strategy names