Ehcache-это чистая рамка кэширования Java-процесса, с быстрыми и худыми функциями, и это кахэпровидер по умолчанию в Hibernate.
EHCache предоставляет различные стратегии кэширования, в основном разделенные на уровни памяти и диска, поэтому нет необходимости беспокоиться о проблемах вместимости.
Spring-Boot-это быстрое интеграция, предназначенная для упрощения начального процесса построения и разработки новых пружинных приложений. Структура использует определенный способ его настройки, так что разработчикам больше не нужно определять конфигурации шаблона.
Поскольку Spring-Boot не требует каких-либо файлов конфигурации шаблона, Spring Boot будет немного отличаться при интеграции некоторых других структур.
1.Spring-Boot-это структура для баночных пакетов, управляемых через Maven. Зависимости, необходимые для интеграции ehcache, следующие
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId></dependency><dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>2.8.3</version></dependency>
Конкретный файл pom.xml выглядит следующим образом
<? xml version = "1.0" Encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <dolidayversion> 4.0.0 </modelversion> <groupD> com.lclc.boot </GroupId> </artifact> </artifact> </artifact> </artifact> </artifact> </artifact> </artifact> </artifact> </artifact> </modelversion> <groupid> com. <версия> 0.0.1-snapshot </version> <!-Утологов по умолчанию от Spring Boot-> <parent> <groupid> org.springframework.boot </GroupId> <strifactid> Spring-Boot-Starter-parent </artifactid> <sersive> 1.1.3.release </version> </parent> <зависимости> <зависимость>. <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.google.guava</groupId> <StrifactId> guava </artifactid> <sersive> 17.0 </version> </dependency> <dependency> <groupid> org.sspringframework </groupid> <artifactid> spring-context-support </artifactid> </getyder> <seyedy> <groupid> net.shcache </artifactid> </jeply> <dehyse> <groupid> net.ehcache </GroupD> <ratifactid> ehcache </artifactid> <sersive> 2.8.3 </version> </dependency> </dependencies> <Degy DependencyManagement> <dependencies> </depertive> </degy Diestion> </depertive> </dependencies> </degesperments> </degy Deportiendion> </jegy Deginencies> <buld> <groupd> <groupd> org.springframe. <Artifactid> Spring-boot-maven-plugin </artifactid> </placin> </plugins> </build> <prepositories> <perpository> <id> Spring-snapshots </id> <url> http://repo.spring.io/snapshot </url> <napshots> <neabled> </snapshort> <//snapishort> <//snapshort> <//snapishort> <//snapshort> <//snapshort> </inabled> <//snapishort> <perpository> <id> Spring-milestones </id> <url> http://repo.spring.io/milestone </url> </repository> </repository> </repository> <plaginrepository> <plaginrepository> <id> Spring-snapshots </id> <URL> http://repo.spring.io/snapshot </url> </pluginRepository> <pluginRepository> <id> Spring-milestones </id> <url> http://repo.spring.io/milestone </url> </pluginrepository> </plucinreposeries> </plucinrepositority> <//plucitories> </pluginrepositorietories> </placinrecires> </url> </pluginrepositorietories> </plucinrefositories> </url> </url> </url> </url> </url>
2. Используя ehcache, нам нужен ehcache.xml, чтобы определить некоторые атрибуты кэша.
<? xml version = "1.0" Encoding = "utf-8"?> <ehcache xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: nonamespaceSchemalocation = "http://ehcache.orgg/ehccecemalocation =" http://ehcache.orgg/ehccecemalocation = "http://ehcache.orge.orgace.xachcemalocation =" http://ehcache.orge.orgace.xachcemalocation = ". <diskstore path = "java.io.tmpdir /tmp_ehcache" /> <defaultcache eternal = "false" maxelementsinmemory = "1000" overflowtodisk = "false" diskpersistent = "false" dimehoidleseconds = "0" name = "demo" eternal = "false" maxelementsinmemory = "100" upflowtodisk = "false" diskpersistent = "false" timeToidleseconds = "0" timetoliveseconds = "300" MemoryStoreEvictictionPolicy = "LRU" /> < /ehcache>
Объясните теги в этом файле XML.
(1) .diskstore: это путь кэша, Ehcache делится на два уровня: память и диск. Это свойство определяет местоположение кэша диска. Параметры объясняются следующим образом:
user.home user Home Directory user.dir Пользовательский текущий каталог java.io.tmpdir по умолчанию временный файл
(2) .defaultcache: политика кэша по умолчанию. Когда Ehcache не может найти определенный кэш, будет использоваться эта политика кэша. Только один может быть определен.
(3) .Cache: Политика CACE CACHE, пользовательская политика кеша. Параметры объясняются следующим образом:
Свойства элемента кеша:
Имя: Имя кэша
MaxElementsInmemory: максимальное количество кэшированных объектов в памяти
maxelementsondisk: максимальное количество кэшированных объектов на жестком диске. Если это 0, это означает бесконечность
Eternal: Истинно означает, что объект никогда не истекает. В настоящее время, временные виды секунд и временные свойства будут проигнорированы, а по умолчанию неверно
Overflowtodisk: True означает, что когда количество объектов, кэшированных в памяти, достигает предела MaxelementsInMemory, переполненные объекты будут записаны в кэш жесткого диска. Примечание. Если кэшированный объект должен быть записан на жесткий диск, объект должен реализовать сериализуемый интерфейс.
Diskspoolbuffersizemb: Размер диска, по умолчанию 30 МБ. Каждый кэш должен иметь свою собственную область кеша.
Дисквистизитный: к тому, кэшируйте данные о перезапуске виртуальной машины во время данных
DiskexpiryThreadIntervalseconds: Интервал времени выполнения диска, по умолчанию 120 секунд
TimeToidLeseconds: устанавливает максимальное время, чтобы объект был простоя, в считанные секунды. Когда объект был доступен в последний раз, если значение свойства TimeDoidLeseconds превышает значение свойства TimeDoidLesseconds, объект истекает, а eHcache будет очищать его из кэша. Это свойство действительнее только в том случае, если вечное свойство является ложным. Если значение свойства равно 0, это означает, что объект может быть простоя на неопределенный срок
Временные секунды: устанавливает максимальное время, которое объект позволяет существовать в кэше, за несколько секунд. Когда объект был сохранен в кэше, если время в кэше превышает значение свойства TimetoliveSeconds, объект истекает, а ehcache очистит его из кэша. Это свойство действительнее только в том случае, если вечное свойство является ложным. Если значение свойства равно 0, это означает, что объект может существовать в кэше на неопределенный срок. Временные второго
MemoryStoreEvictionPolicy: когда достигнут предел MaxElementsInMemory, EHCache очистит память в соответствии с указанной политикой. Дополнительные политики: LRU (последняя недавно используемая, политика по умолчанию), FIFO (сначала, сначала) и LFU (минимальное количество посещений).
3. Разместите менеджер EHCACHE в контейнер для контекста Spring.
@Configuration // Аннотация запускает кэш @enablecachingpublic class cacheconfiguration {/** ehcache main manager*/ @bean (name = "appehcachecachemanager") public ehcachecachemanager ehcachecachemanager (ehcachemanagerfactfactebebe bean) (return nehcacachemanager (becachemanagerfactfactacebebebebebe) (return nehcacachemanager (becachemanagerfactacefacebebebebebebebebebebebebebebebeab } / * * В соответствии с настройками общего или нет, Spring создает базу ehcache через cachemanager.create () или new cachemanager () соответственно. */ @Bean public ehcachemanagerfactorybean ehcachemanagerfactorybean () {ehcachemanagerfactorybean cachemanagerfactorybean = new ehcachemanagerfactorybean (); cachemanagerfactorybean.setConfiglocation (новый ClassPathresource ("conf/ehcache-app.xml")); cachemanagerfactorybean.setshared (true); вернуть CachemanagerFactoryBean; }}@Configuration: аннотирован для Spring-Boot, в основном аннотируется как класс конфигурации, и приоритет дается сканирование.
@Bean: Добавить бон в пружинный контейнер.
Все конфигурации выполняются до сих пор, и интеграция структуры через пружинную буту настолько проста.
4. Используйте ehcache
Использование ehcache в основном через механизм пружинного кеша. Мы реализовали механизм пружинного кеша с использованием ehcache, поэтому мы можем полностью использовать механизм кэша пружинного кеша с точки зрения использования.
Несколько заметок задействованы:
@Cachable: Отвечает за добавление возвращаемого значения метода в кэш, параметр 3
@Cacheevict: отвечает за очистку кэша, параметр 4
Пояснение параметра:
Значение: имя местоположения кэша не может быть пустым. Если используется ehcache, это имя кэша, объявленного в ehcache.xml
Ключ: кэшированная клавиша, по умолчанию пуста, что означает тип параметра и значение параметра метода, используемого в качестве клавиши, и поддерживает SPEL
Условие: условие триггера, только в случае соблюдения условия будет добавлено в кэш. По умолчанию пусто, что означает, что все они добавляются в кэш и поддерживают Spel
Allentries: Параметр Cacheevict, True означает очистку всех кэшей в значении, по умолчанию является ложным
Без лишних слов просто загрузите код:
@Servicepublic class cachedemoserviceimpl реализует CachedemoService {/** * Ключ кэша */public static final String thing_ally_key = "/" thing_all/""; /*** Атрибут значения указывает, какую политику кэша использовать. Кэш -политика находится в ehcache.xml */ public static final String demo_cache_name = "demo"; @Cacheevict (value = demo_cache_name, key = thing_all_key) @override public void create (thing) {long id = getNextid (); thing.setid (id); data.put (id, вещь); } @Cachable (value = demo_cache_name, key = "#thing.getid () + 'thing'") @override public things findbyid (long id) {system.err.println ("Нет кэш!" + Id); вернуть data.get (id); } @Cachable (value = demo_cache_name, key = thing_all_key) @override public list <hell> findall () {return lists.newarraylist (data.values ()); } @Override @CachePUT (value = demo_cache_name, key = "#thing.getid ()+'thing'") @cacheevict (value = demo_cache_name, key = thing_alke) public, что обновление (вещь) {system.out.println (thing); data.put (thing.getid (), thing); вернуть вещь; } @Cacheevict (value = demo_cache_name) @override public void delete (long id) {data.remove (id); }}5. Вам нужно аннотировать метод сервисного уровня только посредством аннотаций, и вы можете использовать кэш, сохранить кэш на поиске ** и очистить кэш на Delete ** и обновление **.
Суммировать
Выше приведено метод интеграции Ehcache Spring-Boot для реализации механизма кэширования, введенного редактором. Я надеюсь, что это будет полезно для всех. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит всем вовремя. Большое спасибо за вашу поддержку сайту wulin.com!