重庆市建设医院网站首页,html5网站优势,婚庆网站建设策划案,传奇网页链接文章目录 概述常用注解入门案例 概述
Spring Cache是Spring框架提供的一个缓存抽象层#xff0c;用于在应用程序中实现缓存的功能。它通过在方法执行前检查缓存中是否已经存在所需数据#xff0c;如果存在则直接返回缓存中的数据#xff0c;如果不存在则执行方法体#xf… 文章目录 概述常用注解入门案例 概述
Spring Cache是Spring框架提供的一个缓存抽象层用于在应用程序中实现缓存的功能。它通过在方法执行前检查缓存中是否已经存在所需数据如果存在则直接返回缓存中的数据如果不存在则执行方法体将方法的返回值存储到缓存中以便后续的请求可以直接从缓存中获取数据。
Spring Cache的主要特性如下 声明式缓存通过使用注解或XML配置的方式可以很方便地将缓存逻辑应用到方法上。开发人员只需要在需要被缓存的方法上添加相应的注解如Cacheable、CachePut等Spring框架会自动处理缓存的读取和更新操作。 缓存注解支持Spring Cache提供了多种缓存注解包括Cacheable、CachePut、CacheEvict等用于标记具体的方法需要进行缓存的读取、更新和清除操作。通过这些注解开发人员可以灵活地控制缓存的行为和策略。 多种缓存技术支持Spring Cache支持多种常见的缓存技术如Ehcache、Redis、Caffeine等。开发人员可以根据实际需求选择合适的缓存提供商并通过简单的配置即可接入相应的缓存技术。 缓存管理器Spring Cache提供了缓存管理器的抽象可以统一管理和配置应用程序中的缓存。开发人员可以通过配置文件或编程方式定义缓存管理器的属性和行为以满足不同环境和需求的缓存配置。 可扩展性Spring Cache具有良好的可扩展性支持自定义缓存注解和缓存操作的实现。开发人员可以根据自己的需求扩展并定制Spring Cache的功能以适应特定的业务场景。
使用Spring Cache可以有效地减少重复计算和数据库访问等耗时操作提升系统的响应速度和性能。它提供了简单而强大的API和注解使得开发人员能够更加轻松地实现缓存功能并与Spring框架的其他模块无缝集成。
常用注解
在SpringCache中提供了很多缓存操作的注解常见的是以下的几个
注解说明EnableCaching开启缓存注解功能通常加在启动类上Cacheable在方法执行前先查询缓存中是否有数据如果有数据则直接返回缓存数据如果没有缓存数据调用方法并将方法返回值放到缓存中CachePut将方法的返回值放到缓存中CacheEvict将一条或多条数据从缓存中删除
在spring boot项目中使用缓存技术只需在项目中导入相关缓存技术的依赖包并在启动类上使用EnableCaching开启缓存支持即可。
例如使用Redis作为缓存技术只需要导入Spring data Redis的maven坐标即可。
入门案例
下面是一个使用Redis作为缓存技术的Spring Cache入门案例
首先确保在项目的依赖中添加以下相关依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-cache/artifactId
/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId
/dependency接下来你需要在Spring Boot的配置文件如application.properties或application.yml中添加Redis的连接信息例如
spring.redis.hostlocalhost
spring.redis.port6379
spring.redis.password然后你可以创建一个UserService接口用于定义用户相关的服务方法
public interface UserService {User getUserById(Long id);
}接着创建一个实现了UserService接口的UserServiceImpl类
Service
public class UserServiceImpl implements UserService {OverrideCacheable(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 {Autowiredprivate UserService userService;Testpublic void testGetUserById() {// 第一次调用会执行方法内部的逻辑从数据库中查询用户信息User user1 userService.getUserById(1L);System.out.println(user1);// 第二次调用应该从缓存中获取用户信息不再执行方法内部的逻辑User user2 userService.getUserById(1L);System.out.println(user2);}
}在上述测试代码中第一次调用getUserById方法时会执行方法内部的逻辑从数据库中查询用户信息。而第二次调用时由于结果已经缓存在名为users的缓存中所以直接从缓存中获取用户信息不再执行方法内部的逻辑。
通过以上方式我们就可以使用Redis作为缓存技术来实现方法级别的缓存功能了。当然在实际项目中你还可以根据需求进一步配置缓存管理器、缓存策略等。