【发布时间】:2017-03-15 04:58:19
【问题描述】:
我使用 Spring Framework 开发 Web 应用程序。
我的 DAO 是一个 Spring bean。 (使用@Component注解)这个bean使用频繁:多个用户访问不同的页面,都使用这个DAO bean来查询数据。
为了加快查询常用数据的速度,我在这个DAO对象中添加了一个字段:map。所以如果一个用户从DB中查询一个数据集,它会存储在这个map中,下一个用户查询相同的数据集可以直接从map中获取。
@Component
class MyDAO {
private Map<T1, T2> cache = new HashMap<>();
.....
}
我的问题:像这样在 Spring bean 中声明一个可变字段是否正确?我担心的是:这个字段对我来说在多线程程序中看起来像是一个共享资源。共享资源需要适当的同步。 Spring 是否负责同步或 Spring 完全禁止此类使用?
【问题讨论】:
标签: java spring multithreading hibernate spring-mvc