java.lang.Object
com.github._1c_syntax.bsl.languageserver.infrastructure.CacheConfiguration

@Configuration @EnableCaching public class CacheConfiguration extends Object
Spring-конфигурация кэширования.

Для typoCache используется EhCache с персистентным хранилищем на диске. Для остальных кэшей (например, code lens) используется Caffeine с хранением в памяти.

  • Constructor Details

    • CacheConfiguration

      public CacheConfiguration()
  • Method Details

    • cacheManager

      @Bean @Primary public CacheManager cacheManager(Caffeine<Object,Object> caffeine)
      Основной менеджер кэша, использующий Caffeine для кэширования в памяти.

      Помечен как @Primary, поэтому используется для всех кэшей по умолчанию, если не указан явно другой менеджер кэша (например, typoCacheManager для typoCache).

    • caffeineConfig

      @Bean public Caffeine<Object,Object> caffeineConfig()
    • ehcacheManager

      @Bean(destroyMethod="close") public CacheManager ehcacheManager(CachePathProvider cachePathProvider, @Value("${app.cache.basePath}") String basePath, @Value("${app.cache.fullPath}") String fullPath)
      Выделенный менеджер EhCache для typoCache с персистентным хранением на диске.

      Настроен программно, без использования XML-конфигурации. При закрытии Spring-контекста вызывается метод close() для корректного завершения работы кэша.

      Кэш размещается в каталоге пользователя, что позволяет избежать захламления git-репозиториев. Путь можно переопределить через свойство app.cache.fullPath.

      При запуске нескольких экземпляров в одной директории автоматически используются отдельные каталоги кэша с суффиксами @1, @2 и т.д. Если все каталоги заблокированы (более 10 экземпляров), автоматически используется кэш в памяти без персистентности.

    • typoCacheManager

      @Bean public CacheManager typoCacheManager(CacheManager ehcacheManager)