Настройка тайм-аута Ehcache TTL с помощью Spring Boot

#java #spring #spring-boot #ehcache

#java #spring #spring-загрузка #ehcache

Вопрос:

Как я могу настроить время истечения срока действия Ehcache с помощью обычной Spring Boot application.properties / application.yml ?

Мои текущие свойства приложения:

 spring.cache.jcache.config=classpath:ehcache.xml
  

Мой ehcache.xml:

 <config xmlns:jsr107='http://www.ehcache.org/v3/jsr107' xmlns='http://www.ehcache.org/v3'>
<service>
    <jsr107:defaults enable-management="true" enable-statistics="true"/>
</service>
<cache alias="Ttl" uses-template="ttl-template"/>
<cache-template name="ttl-template">
    <expiry>
        <ttl unit="minutes">6</ttl>
    </expiry>
    <resources>
        <heap>10000</heap>
    </resources>
 </cache-template>
  

Основной класс:

 @SpringBootApplication
@EnableCaching
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}
  

Есть ли способ настроить эти 6 минут, чтобы я мог перезаписать настройку во время выполнения / при запуске? Для большинства других интеграций Spring Boot были бы некоторые свойства, которые позволили бы напрямую перезаписывать конфигурацию.

Ответ №1:

Я думаю, вы могли бы переключиться на программную конфигурацию и реализовать новый класс свойств, подобный тому, который они сделали для Jhipster : https://www.jhipster.tech/common-application-properties

С помощью этого класса они позволяют своим пользователям устанавливать TTL в конфигурации Spring, а затем вы можете настроить свои менеджеры кэша самостоятельно, программно ; смотрите этот пример из репозитория ehcache3-samples.

Spring / Spring boot используют свои собственные абстракции кэша (Spring Cache, полностью совместимый со спецификацией JSR-107), поэтому я не думаю, что их роль заключается в обеспечении дальнейшей интеграции с реализацией Ehcache3; однако это может сделать либо фреймворк, такой как JHipster, либо конечный пользователь.

Комментарии:

1. Это, вероятно, могло бы сработать, но выглядит не очень интуитивно. Спасибо.