springboot项目中 Ehcache缓存管理器配置流程
时间: 2023-12-09 12:02:53 浏览: 95
1. 添加 Ehcache 依赖
在 Maven 中添加 Ehcache 的依赖:
```xml
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>3.8.1</version>
</dependency>
```
2. 创建 Ehcache 配置文件
在项目的 classpath 下创建 Ehcache 的配置文件 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="userCache">
<key-type>java.lang.String</key-type>
<value-type>com.example.User</value-type>
<expiry>
<ttl unit="seconds">60</ttl>
<tti unit="seconds">30</tti>
</expiry>
<resources>
<heap unit="entries">100</heap>
<offheap unit="MB">10</offheap>
</resources>
</cache>
</config>
```
3. 配置 Ehcache 缓存管理器
在 Spring Boot 中,可以通过注解 @EnableCaching 和 @Configuration 注解来配置 Ehcache 缓存管理器。
示例:
```java
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager() {
Resource resource = new ClassPathResource("ehcache.xml");
Configuration configuration = ConfigurationFactory.parseConfiguration(resource.getInputStream());
return CacheManagerBuilder.newCacheManagerBuilder()
.withCache("userCache", UserCacheConfigurationBuilder.newUserCacheConfigurationBuilder().buildConfig(String.class, User.class))
.withCache("bookCache", BookCacheConfigurationBuilder.newBookCacheConfigurationBuilder().buildConfig(Long.class, Book.class))
.withConfiguration(configuration)
.build(true);
}
}
```
4. 使用 Ehcache 缓存管理器
在需要使用缓存的方法上添加 @Cacheable、@CachePut 或 @CacheEvict 注解来实现缓存的读取、写入和删除。
示例:
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
@Cacheable(value = "userCache", key = "#id")
public User getUserById(String id) {
return userRepository.findById(id).orElse(null);
}
@CachePut(value = "userCache", key = "#user.id")
public User saveOrUpdateUser(User user) {
return userRepository.save(user);
}
@CacheEvict(value = "userCache", key = "#id")
public void deleteUserById(String id) {
userRepository.deleteById(id);
}
}
```
阅读全文