#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. Это, вероятно, могло бы сработать, но выглядит не очень интуитивно. Спасибо.