Cache interface provides ‘get’ method, which takes a mapping function as argument. This method return the value if it is exist in the cache, else get the value from mapping function, store the value in cache and return it.
Signature
V get(K key, Function<? super K, ? extends @PolyNull V> mappingFunction)
If the specified key is not already associated with a value, attempts to compute its value using the given mapping function and enters it into this cache unless null.
Example
Employee emp = cache.get(1, key -> EmployeeService.getEmployee(key));
Find the below working application.
Employee.java
package com.sample.app.model;
public class Employee {
private int id;
private String firstName;
private String lastName;
public Employee(int id, String firstName, String lastName) {
super();
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return "Employee [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + "]";
}
}
App.java
package com.sample.app;
import java.util.concurrent.TimeUnit;
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.sample.app.model.Employee;
import com.sample.app.service.EmployeeService;
public class App {
public static void main(String args[]) {
Cache<Integer, Employee> cache = Caffeine.newBuilder().expireAfterWrite(30, TimeUnit.SECONDS).maximumSize(100)
.build();
Employee emp1 = new Employee(1, "Krishna", "Gurram");
Employee emp2 = new Employee(2, "Gopi", "Battu");
Employee emp3 = new Employee(3, "Saurav", "Sarkar");
cache.put(emp1.getId(), emp1);
cache.put(emp2.getId(), emp2);
cache.put(emp3.getId(), emp3);
System.out.println("Retrieving the employee information with id 1");
Employee emp = cache.get(1, key -> EmployeeService.getEmployee(key));
System.out.println(emp);
System.out.println("\nRetrieving the employee information with id 4");
emp = cache.get(4, key -> EmployeeService.getEmployee(key));
System.out.println(emp);
}
}
Output
Retrieving the employee information with id 1 Employee [id=1, firstName=Krishna, lastName=Gurram] Retrieving the employee information with id 4 Employee [id=4, firstName=first_name_4, lastName=last_name_4]
No comments:
Post a Comment