0

我正在尝试使用 Spring 为我的网站创建一个缓存类,并将以下代码添加到我的 applicationContect.xml 文件中:

<bean id="SiteCache" class="Cache.SiteCache">

我不确定的是如何初始化这个类。我什至需要自己初始化它还是在站点加载时Spring会处理它?如果是这样,我将如何接受构造函数中的参数?

我希望大部分时间都使用该类,作为访问变量以填充站点的更快方法,但我需要一种首先检查是否存在实例的方法,以便我可以加载 XML 文件否则来自来源。

在春季实现缓存的最佳方法是什么?

非常感谢,

4

3 回答 3

5

我不确定的是如何初始化这个类。

默认情况下(提供您的定义)Spring 将只创建一个 bean 实例,并在其他代码需要它的任何地方使用它。

我将如何接受构造函数中的参数?

查看4.4.1.1 基于构造函数的依赖注入

<bean id="foo" class="x.y.Foo">
  <constructor-arg ref="bar"/>
  <constructor-arg value="42"/>
</bean>

4.4.2.7 XML 快捷方式与 c-namespace

<bean id="foo" class="x.y.Foo" c:_0-ref="bar" c:_1-ref="baz">

在春季实现缓存的最佳方法是什么?

使用内置的Spring 缓存抽象是一个好的开始。

于 2012-07-28T16:44:43.787 回答
0

似乎只需要在缓存类的构造函数中加载 XML 文件即可。最后我什至不需要定义一个 bean,只需在每个控制器的 GET/POST 方法中接受它就足以使缓存类保持单例。这样,XML 文件只加载一次,并在站点构建时保存到缓存对象中。之后,缓存对象可用于更轻松的访问。

不过,感谢您提供的替代建议,它们在更复杂的系统上似乎更有效,事实证明我的并不真正需要所有这些。我也有一个粗略的想法,只需要一点提醒!

于 2012-07-30T07:50:52.287 回答
0

在春季实现缓存的最佳方法是什么?

在实现缓存方面,我建议使用现有的缓存实现,例如 EhCache 或类似的结合 Spring缓存抽象

这使得缓存就像注释一个应该访问缓存的方法一样简单@Cacheable。Spring 将在执行该方法之前尝试使用缓存。

虽然编写自己的缓存看起来很简单,但最难的部分始终是缓存失效。

于 2012-07-28T16:29:18.883 回答