Caching Strategy

Overview

Caching configuration for optimal performance.

Cache Configuration

@Configuration
@EnableCaching
public class CacheConfiguration {

    @Bean
    public CacheManager cacheManager() {
        SimpleCacheManager manager = new SimpleCacheManager();
        manager.setCaches(Arrays.asList(
            new ConcurrentMapCache("userOrgAccess"),
            new ConcurrentMapCache("userPersonAccess")
        ));
        return manager;
    }
}

Cached Methods

@Cacheable(
    value = "userOrgAccess",
    key = "#username + '-' + #accessLevel"
)
Set<Long> getUserOrgIds(String username, AccessLevel accessLevel)

@Cacheable(
    value = "userPersonAccess",
    key = "#username + '-' + #accessLevel"
)
Set<Long> getUserPersonIds(String username, AccessLevel accessLevel)

Cache Eviction

@CacheEvict(value = "userOrgAccess", allEntries = true)
public void evictAllOrgCaches()

@CacheEvict(value = "userOrgAccess", key = "#username + '-READ'")
@CacheEvict(value = "userOrgAccess", key = "#username + '-READ_WRITE'")
public void evictUserOrgCache(String username)