java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringCache 入门

SpringCache快速使用及入门案例

作者:等月光倾洒

Spring Cache 是Spring 提供的一整套的缓存解决方案,它不是具体的缓存实现,本文主要介绍了SpringCache快速使用及入门案例,感兴趣的可以了解一下

概述

Spring Cache是Spring框架提供的一个缓存抽象层,用于在应用程序中实现缓存的功能。它通过在方法执行前检查缓存中是否已经存在所需数据,如果存在则直接返回缓存中的数据,如果不存在则执行方法体,将方法的返回值存储到缓存中,以便后续的请求可以直接从缓存中获取数据。

Spring Cache的主要特性如下:

使用Spring Cache可以有效地减少重复计算和数据库访问等耗时操作,提升系统的响应速度和性能。它提供了简单而强大的API和注解,使得开发人员能够更加轻松地实现缓存功能,并与Spring框架的其他模块无缝集成。

常用注解

在SpringCache中提供了很多缓存操作的注解,常见的是以下的几个:

注解说明
@EnableCaching开启缓存注解功能,通常加在启动类上
@Cacheable在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中
@CachePut将方法的返回值放到缓存中
@CacheEvict将一条或多条数据从缓存中删除

在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用@EnableCaching开启缓存支持即可。

例如,使用Redis作为缓存技术,只需要导入Spring data Redis的maven坐标即可。

入门案例

下面是一个使用Redis作为缓存技术的Spring Cache入门案例:

首先,确保在项目的依赖中添加以下相关依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

接下来,你需要在Spring Boot的配置文件(如application.properties或application.yml)中添加Redis的连接信息,例如:

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=

然后,你可以创建一个UserService接口,用于定义用户相关的服务方法:

public interface UserService {
    User getUserById(Long id);
}

接着,创建一个实现了UserService接口的UserServiceImpl类:

@Service
public class UserServiceImpl implements UserService {
    @Override
    @Cacheable(value = "users", key = "#id")
    public User getUserById(Long id) {
        // 模拟从数据库或其他数据源获取用户信息
        System.out.println("查询数据库获取用户信息,用户ID:" + id);
        return new User(id, "John Doe");
    }
}

在上述代码中,我们使用了@Cacheable(value = "users", key = "#id")注解来标记getUserById方法需要进行缓存。这里的"users"是缓存名称,表示将结果缓存到名为"users"的缓存中,key = "#id"表示缓存的key是方法的参数id。

最后,你可以编写一个简单的测试类来验证缓存的效果:

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {
    @Autowired
    private UserService userService;
    @Test
    public void testGetUserById() {
        // 第一次调用,会执行方法内部的逻辑,从数据库中查询用户信息
        User user1 = userService.getUserById(1L);
        System.out.println(user1);
        // 第二次调用,应该从缓存中获取用户信息,不再执行方法内部的逻辑
        User user2 = userService.getUserById(1L);
        System.out.println(user2);
    }
}

在上述测试代码中,第一次调用getUserById方法时,会执行方法内部的逻辑,从数据库中查询用户信息。而第二次调用时,由于结果已经缓存在名为"users"的缓存中,所以直接从缓存中获取用户信息,不再执行方法内部的逻辑。

通过以上方式,我们就可以使用Redis作为缓存技术来实现方法级别的缓存功能了。当然,在实际项目中,你还可以根据需求进一步配置缓存管理器、缓存策略等。

到此这篇关于SpringCache快速使用及入门案例的文章就介绍到这了,更多相关SpringCache 入门内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文