Springboot 2(18)データキャッシュを簡単に作成
2830 ワード
キャッシュはデータベースアクセスの圧力を緩和することができ、Spring自身はキャッシュのストレージ実装を提供せず、JCache、EhCache、Hazelcast、Redis、Guavaなどのサードパーティを借りる必要がある.Spring Bootでは、適切なキャッシュマネージャの構成を自動化できます.デフォルトでは
spring-boot-starter-cache依存性の追加
キャッシュ機能をオンにする
データのキャッシュ
キャッシュの操作は,@Cacheable,@CachePut,@CacheEveictが主である.
@Cacheable
Spring@Cacheable注記のメソッドを実行する前に、キャッシュにデータがあるかどうかを確認し、データがある場合はキャッシュデータを直接返します.データがない場合は、メソッドを実行し、メソッドの戻り値をキャッシュに入れます.パラメータ:valueキャッシュ名、keyキャッシュキー値、conditionがキャッシュ条件を満たす、unlessがキャッシュ条件を拒否する
@CachePut
@Cacheableと同様に、キャッシュにデータがあるかどうかにかかわらず、このメソッドを実行し、メソッドの戻り値をキャッシュに入れます.主に、データの新規作成とメソッドの変更に使用されます.
@CacheEvict
メソッドが正常に実行されると、対応するデータがキャッシュから削除されます.パラメータ:valueキャッシュ名、keyキャッシュキー値、conditionがキャッシュ条件を満たす、unlessがキャッシュ条件を拒否する、allEntriesがすべてのデータを除去するかどうか(trueに設定するとすべてのキャッシュが除去されます)
統合EhCache
依存の追加
パーソナライズされたパラメータをカスタマイズする場合は、Java Config形式で構成します.
キャッシュされたオブジェクトはSerializableを実装する必要があります
ConcurrentMapCacheManager(java.util.concurrent.ConcurrentHashMap)
が使用されます.spring-boot-starter-cache依存性の追加
org.springframework.boot
spring-boot-starter-cache
キャッシュ機能をオンにする
@Configuration
@EnableCaching
public class CacheConfig {
}
データのキャッシュ
キャッシュの操作は,@Cacheable,@CachePut,@CacheEveictが主である.
@Cacheable
Spring@Cacheable注記のメソッドを実行する前に、キャッシュにデータがあるかどうかを確認し、データがある場合はキャッシュデータを直接返します.データがない場合は、メソッドを実行し、メソッドの戻り値をキャッシュに入れます.パラメータ:valueキャッシュ名、keyキャッシュキー値、conditionがキャッシュ条件を満たす、unlessがキャッシュ条件を拒否する
@CachePut
@Cacheableと同様に、キャッシュにデータがあるかどうかにかかわらず、このメソッドを実行し、メソッドの戻り値をキャッシュに入れます.主に、データの新規作成とメソッドの変更に使用されます.
@CacheEvict
メソッドが正常に実行されると、対応するデータがキャッシュから削除されます.パラメータ:valueキャッシュ名、keyキャッシュキー値、conditionがキャッシュ条件を満たす、unlessがキャッシュ条件を拒否する、allEntriesがすべてのデータを除去するかどうか(trueに設定するとすべてのキャッシュが除去されます)
@Component
@Slf4j
public class CacheUtil {
@Autowired
User user;
@Cacheable(value = "user", key = "#user.name")
public User getUser(User user){
log.info("get user");
return user;
}
@CachePut(value = "user", key = "#user.name")
public User saveUser(User user){
log.info("save user");
return user;
}
@CacheEvict(value = "user", key = "#name") // key
public void deleteUser(String name){
log.info("delete user");
}
@CacheEvict(value = "user", allEntries = true) //
public void deleteAll() {
log.info("delete All");
}
}
統合EhCache
依存の追加
net.sf.ehcache
ehcache
ehcache.xml
をsrc/main/resources
に配置し、spring.cache.ehcache.config: classpath:ehcache.xml
を配置する.パーソナライズされたパラメータをカスタマイズする場合は、Java Config形式で構成します.
@Configuration
@EnableCaching
public class CacheConfig {
@Bean
public CacheManager cacheManager() {
return new EhCacheCacheManager(ehCacheCacheManager().getObject());
}
@Bean
public EhCacheManagerFactoryBean ehCacheCacheManager() {
EhCacheManagerFactoryBean cmfb = new EhCacheManagerFactoryBean();
cmfb.setConfigLocation(new ClassPathResource("ehcache.xml"));
cmfb.setShared(true);
return cmfb;
}
}
キャッシュされたオブジェクトはSerializableを実装する必要があります