让我们来讲解一下“Spring Boot设置并使用缓存的步骤”的完整攻略。
1. 添加缓存依赖
在 pom.xml
文件中添加 spring-boot-starter-cache
依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
2. 配置缓存属性
在 application.properties
或 application.yml
中配置缓存属性,如下:
application.properties
# 使用默认的缓存配置
spring.cache.type=SIMPLE
application.yml
# 使用默认的缓存配置
spring:
cache:
type: SIMPLE
3. 编写缓存逻辑
在需要添加缓存的方法上,使用 @Cacheable
注解,如下:
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Cacheable(value = "users", key = "#id")
public User getUserById(Long id) {
return userRepository.findOne(id);
}
}
在上面的代码中,我们在 getUserById()
方法上使用了 @Cacheable
注解,并设置了缓存名称为 users
,缓存的 key 值为传进来的 id
。
4. 测试缓存
启动应用程序,然后通过调用 getUserById()
方法来测试缓存是否正常工作,如下:
@Autowired
private UserService userService;
@Test
public void testGetUserById() {
// 第一次查询用户
User user = userService.getUserById(1L);
System.out.println(user);
// 第二次查询用户
user = userService.getUserById(1L);
System.out.println(user);
}
打印结果应该如下:
User[id=1, name="张三"]
User[id=1, name="张三"]
可以看到,第二次查询用户并没有再次调用 getUserById()
方法,而是直接从缓存中获取了结果。
示例一:使用 Redis 缓存
步骤一:添加 Redis 依赖
在 pom.xml
文件中添加 Redis 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
步骤二:配置 Redis 属性
在 application.yml
中添加 Redis 相关属性:
# Redis相关属性
spring:
redis:
host: 127.0.0.1 # Redis服务器地址
port: 6379 # Redis服务器端口
步骤三:配置 Redis 缓存管理器
在 Spring Boot 中,我们可以通过实现 CacheManager
接口来自定义缓存管理器。
@Configuration
public class RedisCacheConfig {
@Autowired
private RedisConnectionFactory redisConnectionFactory;
@Bean
public CacheManager cacheManager() {
// 使用 RedisCacheManager 作为缓存管理器
RedisCacheManager cacheManager = RedisCacheManager.create(redisConnectionFactory);
// 设置默认的缓存过期时间为 1 分钟
cacheManager.setDefaultExpiration(60);
// 设置缓存名称与过期时间
Map<String, Long> expires = new HashMap<>();
expires.put("users", 1800L); // 过期时间为 30 分钟
cacheManager.setExpires(expires);
return cacheManager;
}
}
在上面的代码中,我们使用 RedisCacheManager
作为缓存管理器,并设置了默认的缓存过期时间为 1 分钟,缓存名称为 users
的缓存过期时间为 30 分钟。
示例二:使用 Ehcache 缓存
步骤一:添加 Ehcache 依赖
在 pom.xml
文件中添加 Ehcache 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
步骤二:配置 Ehcache 属性
在 application.yml
中添加 Ehcache 相关属性:
# Ehcache相关属性
spring:
cache:
ehcache:
config: ehcache.xml # 指定 Ehcache 配置文件
步骤三:配置 Ehcache 缓存管理器
在 Ehcache 中,我们可以通过编写一个 XML 文件来配置缓存管理器。
<?xml version="1.0" encoding="UTF-8"?>
<ehcache>
<diskStore path="java.io.tmpdir" />
<defaultCache
maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
/>
<cache
name="users"
maxElementsInMemory="1000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
/>
</ehcache>
在上面的 XML 文件中,我们配置了一个名为 users
的缓存,设置了缓存大小、过期时间等属性。
在 Spring Boot 中,我们可以通过实现 CacheManager
接口和 EhCacheManagerFactoryBean
类来自定义缓存管理器,如下:
@Configuration
public class EhcacheConfig {
@Bean
public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean();
ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource("ehcache.xml"));
ehCacheManagerFactoryBean.setShared(true);
return ehCacheManagerFactoryBean;
}
@Bean
public CacheManager cacheManager() {
EhCacheCacheManager cacheManager = new EhCacheCacheManager();
cacheManager.setCacheManager(ehCacheManagerFactoryBean().getObject());
return cacheManager;
}
}
在上面的代码中,我们使用 EhCacheManagerFactoryBean
类来加载 Ehcache 配置文件,并使用 EhCacheCacheManager
类将 EhCache 缓存管理器暴露为 Spring 缓存管理器。
结束语
至此,我们已经完成了 Spring Boot 设置并使用缓存的步骤。在实际的应用中,我们可以根据具体的需求来选择不同的缓存解决方案,并按照以上步骤进行配置和使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot设置并使用缓存的步骤 - Python技术站