bang能否介绍一下在实际系统中,该如何对cache的数据进行集中管理

注:cache的数据应该包含不变的和比较少变动的。比如象一些权限信息,角色,功能项等。

我指的是业务逻辑上的数据cache,比如权限中的功能项,菜单项,角色及角色和功能、菜单之间的对应的数据,再比如部门数据的cache.

我的做法是,没有象spring 提出的那种由一个存储在servletcontext的cacheManager来对cache的数据对象进行集中管理(它是不是这样提的?我倒有点忘记了)。主要是感觉这样每次都得先对数据取出来,再cast,比较麻烦。我一般做法是针对各个模块,比如权限,部门等各写几个DataKeeper类,以static方法发布存取数据的接口。但这些static只由service层的组件调用,web层只能通过service来调用这些数据。
但感觉这样一个系统通常会有10几个DataKeeper类甚至更多。而且更新cache数据的时候需要一个个去更新(这个不知道有没有好的解决方法,我的想法是针对数据操作方法以aop方式更新各个dataKeeper)。总之就是觉的不妥当。

你应该将这些static类变成非static, 放入Ioc容器中,如Spring或Jdon,你将容器看成是一个集中管理的入口,客户端可以通过容器获得到你这10多个DataKeeper。这是Ioc容器主要优点。