springboot hazelcast缓存中间件的实例代码

 更新时间:2018年08月23日 11:38:27   作者:张占岭  
这篇文章主要介绍了springboot hazelcast缓存中间件的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

缓存来了

在dotnet平台有自己的缓存框架,在java springboot里当然了集成了很多,而且缓存的中间件也可以进行多种选择,向 redis , hazelcast 都是分布式的缓存中间件,今天主要说一下后者的实现。

添加依赖包

dependencies {
  compile("org.springframework.boot:spring-boot-starter-cache")
  compile("com.hazelcast:hazelcast:3.7.4")
  compile("com.hazelcast:hazelcast-spring:3.7.4")
}
bootRun {  systemProperty "spring.profiles.active", "hazelcast-cache"
}

config统一配置

@Configuration
@Profile("hazelcast-cache")//运行环境名称
public class HazelcastCacheConfig {
 @Bean
 public Config hazelCastConfig() {
  Config config = new Config();
  config.setInstanceName("hazelcast-cache");
  MapConfig allUsersCache = new MapConfig();
  allUsersCache.setTimeToLiveSeconds(3600);
  allUsersCache.setEvictionPolicy(EvictionPolicy.LFU);
  config.getMapConfigs().put("alluserscache", allUsersCache);
  MapConfig usercache = new MapConfig();
  usercache.setTimeToLiveSeconds(3600);//超时时间为1小时
  usercache.setEvictionPolicy(EvictionPolicy.LFU);
  config.getMapConfigs().put("usercache", usercache);//usercache为缓存的cachename
  return config;
 }
}

添加仓储

public interface UserRepository {
 List<UserInfo> fetchAllUsers();
 List<UserInfo> fetchAllUsers(String name);
}
@Repository
@Profile("hazelcast-cache")// 指定在这个hazelcast-cache环境下,UserRepository的实例才是UserInfoRepositoryHazelcast
public class UserInfoRepositoryHazelcast implements UserRepository {
 @Override
 @Cacheable(cacheNames = "usercache", key = "#root.methodName")// 无参的方法,方法名作为key
 public List<UserInfo> fetchAllUsers(){
  List<UserInfo> list = new ArrayList<>();
  list.add(UserInfo.builder().phone("135").userName("zzl1").createAt(LocalDateTime.now()).build());
  list.add(UserInfo.builder().phone("136").userName("zzl2").createAt(LocalDateTime.now()).build());
  return list;
 }
 @Override
 @Cacheable(cacheNames = "usercache", key = "{#name}") // 方法名和参数组合做为key
 public List<UserInfo> fetchAllUsers(String name) {
  List<UserInfo> list = new ArrayList<>();
  list.add(UserInfo.builder().phone("135").userName("zzl1").createAt(LocalDateTime.now()).build());
  list.add(UserInfo.builder().phone("136").userName("zzl2").createAt(LocalDateTime.now()).build());
  return list;
 }
}

配置profile

application.yml开启这个缓存的环境

profiles.active: hazelcast-cache

运行程序

可以在单元测试里进行测试,调用多次,方法体只进入一次,这就是缓存成功了。

@ActiveProfiles("hazelcast-cache")
public class UserControllerTest extends BaseControllerTest {
 @Test
 public void fetchUsers() {
  getOk();
  //test caching
  getOk();
 }
 private WebTestClient.ResponseSpec getOk() {
  return http.get()
    .uri("/users/all/zzl")
    .exchange()
    .expectStatus().isOk();
 }
}

总结

以上所述是小编给大家介绍的springboot hazelcast缓存中间件的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 基于Java实现杨辉三角 LeetCode Pascal''s Triangle

    基于Java实现杨辉三角 LeetCode Pascal''s Triangle

    这篇文章主要介绍了基于Java实现杨辉三角 LeetCode Pascal's Triangle的相关资料,需要的朋友可以参考下
    2016-01-01
  • 解析Java并发Exchanger的使用

    解析Java并发Exchanger的使用

    Exchanger是java 5引入的并发类,Exchanger顾名思义就是用来做交换的。这里主要是两个线程之间交换持有的对象。当Exchanger在一个线程中调用exchange方法之后,会等待另外的线程调用同样的exchange方法。两个线程都调用exchange方法之后,传入的参数就会交换。
    2021-06-06
  • 完美解决IDEA Ctrl+Shift+f快捷键突然无效的问题

    完美解决IDEA Ctrl+Shift+f快捷键突然无效的问题

    这篇文章主要介绍了完美解决IDEA Ctrl+Shift+f快捷键突然无效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java集合框架中迭代器Iterator解析

    Java集合框架中迭代器Iterator解析

    这篇文章主要为大家简单介绍了Java集合框架中迭代器Iterator的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 浅谈Spring中@Import注解的作用和使用

    浅谈Spring中@Import注解的作用和使用

    这篇文章主要介绍了浅谈Spring中@Import注解的作用和使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • SpringSecurity 默认登录认证的实现原理解析

    SpringSecurity 默认登录认证的实现原理解析

    这篇文章主要介绍了SpringSecurity 默认登录认证的实现原理解析,本文通过图文示例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-12-12
  • java实现队列数据结构代码详解

    java实现队列数据结构代码详解

    这篇文章主要介绍了java实现队列数据结构代码详解,简单介绍了队列结构以应用场景,涉及详细实现代码,还是比较不错的,这里分享给大家,需要的朋友可以参考下。
    2017-11-11
  • 排查Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl

    排查Failed to validate connection com.mysql.cj.jdbc.Connec

    这篇文章主要介绍了Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl问题排查,具有很好的参考价值,希望对大家有所帮助
    2023-02-02
  • JAVA  字符串加密、密码加密实现方法

    JAVA 字符串加密、密码加密实现方法

    这篇文章主要介绍了JAVA 字符串加密、密码加密实现方法的相关资料,需要的朋友可以参考下
    2016-10-10
  • scala+redis实现分布式锁的示例代码

    scala+redis实现分布式锁的示例代码

    这篇文章主要介绍了scala+redis实现分布式锁的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06

最新评论