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 делится на два уровня: память и диск. Это свойство определяет местоположение кэша диска. Параметры объясняются следующим образом:
(2) .defaultcache: политика кэша по умолчанию. Когда Ehcache не может найти определенный кэш, будет использоваться эта политика кэша. Только один может быть определен.
(3) .Cache: Политика CACE CACHE, пользовательская политика кеша. Параметры объясняются следующим образом:
Springboot поддерживает многие методы кэширования: Redis, Guava, Ehcahe, JCache и т. Д.
Объясните разницу между Redis и Ehcache:
Redis: Это независимая программа бега. Только после установки он манипулируется с использованием Jedis на Java. Поскольку он независим, если вы напишете модульную программу тестирования, поместите некоторые данные в Redis, а затем напишите другую программу, чтобы получить данные, вы можете получить данные. В
Ehcache: Очевидно, что он отличается от Redis, он связан с Java -программами. Когда программа Java жива, она жива. Например, если вы пишете независимую программу для размещения данных, а затем пишете независимую программу для получения данных, вы не получите данные. Данные могут быть получены только в независимых программах.
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
Пояснение параметра:
Без лишних слов просто загрузите код:
@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 ** и обновление **.
Подробное объяснение аннотаций кеша
@CacheConfig: в основном используется для настройки некоторых общих конфигураций кэша, которые будут использоваться в этом классе. Здесь @cacheconfig (cachenames = "users"): контент, возвращаемый в объекте доступа данных, настроен для сохранения в объекте Cache с именем пользователями. Мы также можем определить его непосредственно через собственное имя @Cachable набор кэша без использования этой аннотации.
@Cachable: возвращаемое значение функции FindByName, настроенной, будет добавлено в кэш. В то же время, при запросе, он сначала попадет из кеша, и если его не существует, будет инициирован доступ к базе данных. Эта аннотация в основном имеет следующие параметры:
В дополнение к двум аннотациям, используемым здесь, есть также следующие основные аннотации:
@Cacheput: настроено на функцию, его можно кэшировать в соответствии с параметрами и определять условия. В отличие от @Cachable, он действительно вызывает функцию каждый раз, поэтому в основном используется для операций с добавлением данных и модификации. Его параметры аналогичны @Cachable. Для конкретных функций, пожалуйста, обратитесь к вышеуказанному анализу параметров @cachable.
@Cacheevict: настроено на функции, обычно используемые в методах удаления, для удаления соответствующих данных из кэша. В дополнение к тем же параметрам, что и @cachable, он имеет следующие два параметра:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.