Spring Boot与Hazelcast很好地集成在一起。在类路径上提供Hazelcast配置就足够了,它将被自动使用。在这篇博客文章中,我将逐步解释如何启用Hazelcast作为Spring Boot应用程序的缓存管理器。
该博客的源代码发布在Github的Hazelcast指南存储库中。
Spring Boot应用程序 要在Spring Boot应用程序中使用缓存,您需要:
org.springframework.boot:spring-boot-starter-cache
@EnableCaching
@Cacheable("books")
在我们的例子中,让我们有一个简单的Web服务,其中包含两个定义如下的类。
// BookController.java @RestController @RequestMapping("/books") public class BookController { @Autowired private BookService bookService; @GetMapping("/{isbn}") public String getBookNameByIsbn(@PathVariable("isbn") String isbn) { return bookService.getBookNameByIsbn(isbn); } }
// BookService.java @Service public class BookService { @Cacheable("books") public String getBookNameByIsbn(String isbn) { return findBookInSlowSource(isbn); } private String findBookInSlowSource(String isbn) { // some long processing try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } return "Sample Book Name"; } }
如果我们启动该应用程序,则对端点的每次调用/books/<isbn>都将转到该方法findBookNameByIsbn(),该方法又将首先检查缓存。只有在缓存中找不到值时,该方法findBookInSlowSource()才会执行。
/books/<isbn>
findBookNameByIsbn()
findBookInSlowSource()
使用Hazelcast作为缓存管理器 我们想使用Hazelcast作为缓存管理器。好消息是,您要做的就是将Hazelcast添加到您的类路径中。
<!-- pom.xml --> <dependency> <groupId>com.hazelcast</groupId> <artifactId>hazelcast-all</artifactId> <version>4.0.2</version> </dependency>
然后,您需要通过以下方式之一添加Hazelcast配置:
hazelcast.yaml
hazelcast.xml
@Bean
src/main/resources
# hazelcast.yaml hazelcast: network: join: multicast: enabled: true
无需更多配置,Hazelcast已被用作项目中的缓存管理器!
Starting the Application 要启动该应用程序,请运行以下命令。
mvn spring-boot:run
您应该在日志中看到嵌入式Hazelcast已启动。
Members {size:1, ver:1} [
Member [172.30.63.9]:5701 - 75cd0b19-ee36-4e0a-9d9c-38c49f67f842 this ]
测试应用程序 您可以通过执行以下命令来测试应用程序。
curl locahost:8080/books/123
Sample Book Name
第一次执行此命令时,应该花费一些时间来获得响应。但是,当您再次尝试时,它是即时的。这意味着使用了缓存。
更重要的是? Spring Boot与Hazelcast确实集成良好,反之亦然。如果要在客户端-服务器拓扑中使用Hazelcast,那么只要创建hazelcast-client.yaml文件而不是hazelcast.yaml在类路径上就足够了。就是这样!您配置了Hazelcast客户端。
原文链接:http://codingdict.com