我的需求是当程序启动时,使用caffeine自动将一些对象存入缓存中,同时另外一个服务随时可以调用该缓存
时间: 2024-04-07 07:33:00 浏览: 16
明白了,你的需求是在程序启动时自动将一些对象存入 Caffeine 缓存中,并且另一个服务可以随时调用该缓存。以下是一个示例,演示了如何实现这个需求。
首先,确保你的项目中已经引入了 Caffeine 的依赖。
接下来,我们创建一个名为 `CacheInitializer` 的类,用于在程序启动时初始化缓存并将对象存入其中:
```java
import com.github.benmanes.caffeine.cache.Cache;
import com.github.benmanes.caffeine.cache.Caffeine;
public class CacheInitializer {
private static Cache<String, Object> cache;
public static void initializeCache() {
// 创建缓存实例
cache = Caffeine.newBuilder()
.maximumSize(100) // 设置缓存最大容量
.build();
// 将对象存入缓存
cache.put("key1", new Object());
cache.put("key2", new Object());
cache.put("key3", new Object());
// 其他初始化操作...
}
public static Cache<String, Object> getCache() {
return cache;
}
}
```
在上述代码中,我们使用了 Caffeine 的 `Caffeine.newBuilder()` 方法来创建缓存实例,并通过 `maximumSize()` 方法设置了最大容量为 100。你可以根据实际需求进行调整。然后,我们可以在 `initializeCache()` 方法中将需要存入缓存的对象使用 `put()` 方法添加到缓存中。
接下来,在你的应用程序的入口类中,你可以调用 `CacheInitializer.initializeCache()` 方法来初始化缓存,并且在需要访问缓存的地方,可以使用 `CacheInitializer.getCache()` 方法获取缓存实例。
```java
public class Main {
public static void main(String[] args) {
// 初始化缓存
CacheInitializer.initializeCache();
// 获取缓存实例
Cache<String, Object> cache = CacheInitializer.getCache();
// 在其他地方使用缓存
Object value = cache.getIfPresent("key1");
System.out.println(value); // 输出: 对象的值
}
}
```
在上述代码中,我们在程序启动时调用了 `CacheInitializer.initializeCache()` 方法来初始化缓存,并且在需要访问缓存的地方,使用 `CacheInitializer.getCache()` 方法获取了缓存实例,并通过该实例调用 `getIfPresent()` 方法来获取缓存中的对象。
希望这个示例能满足你的需求!如果有任何问题,请随时向我提问。