spring boot 使用ehcache 实现缓存

所谓缓存是一种存储机制,可将数据保存在某一个地方,并以一种更快的方式为以后的请求提供服务

spring 对于缓存提供了声明式缓存注解 ,并提供了四种类型的声明式缓存注解(同样是使用了AOP 技术实现),这些注解定义了那些 方法的返回值将要被缓存或者从缓存存储器中移除 ,需要注意的是,只有使用public 定义的方法才可以被缓存,当在一个类上使用注解时,该类中的每个公共方法都将被缓存到给定的存储器中或者从给定的存储器中移除

这四个注解如下

  1. @Cacheable
    应用到读取数据的方法上,即可缓存的方法,如查找方法:先从缓存中读取,如果没有,再调用方法获取数据,然后把数据添加到缓存中,适用于查找 @Cacheable 有以下属性
    value: 用于指定缓存器的名称 ,当然也可以在类上声明缓存器的名称 使用@CacheConfig(cacheNames = “userCache”) 声明
    key: 键生成器 ,缓存值的键 ,在默认情况下,缓存抽象使用方法签名以及参数值作为一个键值 ,并将该键和方法调用的结果组成键值对 ,当然也可以使用 key 自定义键 同时 使用EL 表达式将值注入
    condition 条件缓存 使用condition 属性 ,可以根据条件对一个方法应用缓存
  2. @CachePut
    该注解与Cacheable 完成相同的工作,它通常首先执行方法,然后返回值到缓存。 该注解适合使用返回值来更新缓存存储器
  3. @CacheEvict
    将一条或多条数据从缓存中删除,该注解常用于用户更新或删除操作对现有数据进行操作 也提供了 key 和 condition 属性 ,可以通过这些属性完成自定义键和条件
  4. @Caching
    通过该注解可以组合多个注解策略在一个方法上

spring boot 集成ehcache 实现数据缓存

  1. 加入依赖
<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-cache</artifactId>
		</dependency>
		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache</artifactId>
		</dependency>
  1. 配置 eache.xml 文件
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd">

    <cache name="userCache"
           eternal="false"
           maxEntriesLocalHeap="0"
           timeToIdleSeconds="12000"/>
	<!--  name 表示缓存名,可以配置多个 ,在需要使用cache 的地方使用 @CacheConfig(cacheNames = "cacheName") 引用 -->
    <!-- eternal:true表示对象永不过期,此时会忽略timeToIdleSeconds和timeToLiveSeconds属性,默认为false -->
    <!-- maxEntriesLocalHeap:堆内存中最大缓存对象数,0没有限制 -->
    <!-- timeToIdleSeconds: 设定允许对象处于空闲状态的最长时间,以秒为单位。当对象自从最近一次被访问后,
    如果处于空闲状态的时间超过了timeToIdleSeconds属性值,这个对象就会过期,EHCache将把它从缓存中清空。
    只有当eternal属性为false,该属性才有效。如果该属性值为0,则表示对象可以无限期地处于空闲状态 -->
</ehcache>
  1. 在启动类上使用@EnableCaching 注解
@SpringBootApplication
@EnableCaching
public class SpingbootmybatisApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpingbootmybatisApplication.class, args);
	}
}
  1. 在具体方法上使用对应的ehcache 标签 以及@CacheConfig(cacheNames = “cacheName”) 设置了ehcache的名称,这个名称就是ehcache.xml内的名称
    /**
     *    @Cacheable(key = "#id") 应用到读取数据的方法上,即可缓存的方法,如查找方法:先从缓存中读取,如果没有再调 用方法获取数据,然后把数据添加到缓存中,适用于查找
     * @param id
     * @return
     */
    @Cacheable(key = "#id")
    @Override
    public User findUserById(int id) {
        return userMapper.selectByPrimaryKey(id);
    }

/**
     *     @CachePut 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存,和 @Cacheable 不同的是,它每次都会触发真实方法的调用。适用于更新和插入
     * @param user
     */
    @Override
    @CachePut
    public void insertUser(User user) {
        userMapper.insertSelective(user);
    }
/**
     * @CacheEvict 主要针对方法配置,能够根据一定的条件对缓存进行清空。适用于删除
     * @param id
     */
    @CacheEvict(key = "#id")
    @Override
    public void deleteUserById(int id) {
        userMapper.deleteByPrimaryKey(id);
    }

缓存的使用,很多时候需要根据实际的业务逻辑进行选择和设置。 更多的是需要和业务场景匹配已达到最好的使用效果,当然也可以使用redis 来实现(主要是通过修改cacheManager 来实现),后面会接着更新
demo 代码:srping boot 使用ehcache 实现缓存

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Ehcache 缓存来配置 Spring Boot 的步骤如下: 1. 添加 Ehcache 依赖:在 pom.xml 文件中添加 Ehcache 的相关依赖。 ```xml <dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> </dependency> ``` 2. 创建 Ehcache 配置文件:在 src/main/resources 目录下创建一个 ehcache.xml 文件,并配置缓存的名称、容量、过期时间等信息。 ```xml <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.ehcache.org/v3" xsi:schemaLocation="http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd"> <cache alias="myCache"> <expiry> <ttl unit="seconds">60</ttl> </expiry> <heap unit="entries">100</heap> </cache> </config> ``` 3. 配置 Spring Boot 应用程序:在 Spring Boot 的配置类上使用 @EnableCaching 注解开启缓存功能,并指定 Ehcache缓存管理器。 ```java import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.ehcache.EhCacheCacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration @EnableCaching public class CacheConfig { @Bean public EhCacheCacheManager cacheManager(CacheManager ehCacheManager) { return new EhCacheCacheManager(ehCacheManager); } } ``` 4. 使用缓存注解:在需要缓存的方法上使用 Spring缓存注解,比如 @Cacheable、@CachePut、@CacheEvict 等。 ```java @Service public class MyService { @Cacheable("myCache") public String getCachedData(String key) { // 从数据库或其他数据源中获取数据 return data; } } ``` 以上是使用 Ehcache 缓存配置 Spring Boot 的基本步骤。请根据你的具体需求进行相应的修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值