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

时间:2015-01-21 19:15:36

标签: spring session caching memory

我的应用程序列表中包含客户和用户。我想在开始时获取它们的列表。然后使用本地存储的数据,而不是DB。

你能用一些例子向我建议一些方法吗?

我想一下HttpSession对象?但我不确定是否可以? 因为此数据应该仅对已登录的用户可用,该用户在启动时访问它。

每个申请页面上都有客户名单!

4 个答案:

答案 0 :(得分:1)

查看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)

答案 1 :(得分:1)

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

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

您应该在其中一个配置类上使用@EnableCaching批注启用缓存。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

如果您想多次重复使用数据,并且不希望每次都进行查询。我建议创建一个简单的Cache suing HashMap或HashTable。

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

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