Spring 框架。如何存储一些数据以防止每次访问数据库

Spring framework. How to store some data to prevent each time access db

我的应用程序中有客户和用户列表。我只想在开始时获得它们的列表。然后使用本地存储的数据,而不是来自数据库的数据。

你能用例子告诉我一些方法吗?

我在想HttpSession对象?但我不确定可以吗? 因为这个数据应该只对登录用户可用,在开始时访问它。

客户名单将在应用程序的每一页上提供!

您仍然可以使用 HttpSession 对象,但是,只将它放入会话中一次,用户已登录...您可以在页面关闭时将其从会话中删除...

如果想多次复用数据,又不想每次都查询。我建议创建一个使用 HashMap 或 HashTable 的简单缓存。

您可以轻松地在这种数据结构中保存每个 ID 的客户列表。

并且在 spring 中,您可以轻松创建一个单例 bean,它将保存此 hashmap 并可在整个应用程序中访问。

看看Spring缓存http://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html

您可以注释您的存储库方法:

@Cacheable(value="customer", key="#prsonalNum")
public Customer findCustomer(String prsonalNum) {
   ...
}

应用程序只会在第一次进入方法体。之后,该值将从缓存中获取。

您也可以在更新某些客户时清除缓存。

@CacheEvict(value="customer", allEntries=true)
public void addCustomer(Customer cust)

要使插入和更新操作与缓存同步,请使用@CachePut 注释,要使删除操作与缓存同步,请使用@CacheEvict 注释。

使用相同的缓存名称(值参数)和相同的键值

并且您应该在您的配置之一上使用 @EnableCaching 注释启用缓存 类。