我正在尝试使用Spring为我的网站创建一个缓存类,并将以下代码添加到我的applicationContect.xml文件中:
<bean id="SiteCache" class="Cache.SiteCache">
我不确定如何初始化这个类。我是否需要自己初始化它,或者当网站加载时Spring会处理它吗?如果是这样,我将如何接受构造函数中的参数?
我希望这个类大部分时间都可以使用,作为访问变量来填充站点的一种更快捷的方法,但我需要一种方法来检查是否有一个实例,所以我可以加载否则来自源的XML文件。
在春天实现缓存的最佳方法是什么?
非常感谢,
答案 0 :(得分:5)
我不确定如何初始化这个类。
默认情况下(提供你的定义)Spring将只创建一个bean实例,并在其他代码需要的地方使用它。
我如何接受构造函数中的参数?
结帐4.4.1.1 Constructor-based dependency injection:
<bean id="foo" class="x.y.Foo">
<constructor-arg ref="bar"/>
<constructor-arg value="42"/>
</bean>
和4.4.2.7 XML shortcut with the c-namespace:
<bean id="foo" class="x.y.Foo" c:_0-ref="bar" c:_1-ref="baz">
在春天实现缓存的最佳方法是什么?
使用内置Spring cache abstraction是个不错的开始。
答案 1 :(得分:0)
在春天实现缓存的最佳方法是什么?
在实现缓存方面,我建议使用现有的Cache实现,例如EhCache或类似的Spring cache abstraction。
这使得缓存就像注释应该使用@Cacheable
访问缓存的方法一样简单。 Spring将在执行方法之前尝试使用缓存。
虽然编写自己的缓存看起来很简单,但最难的部分始终是缓存失效。
答案 2 :(得分:0)
似乎所有必要的是在缓存类的构造函数中加载XML文件。我甚至不需要最后定义一个bean,只需在我的GET / POST方法中为每个控制器接受它就足以使缓存类保持单一。这样,XML文件只加载一次,并在构建站点时保存到缓存对象中。之后,可以使用缓存对象来更轻松地访问。
感谢您提供其他建议,但它们在更复杂的系统上似乎更有效,结果发现我并不是真的需要这一切。我也有一个粗略的想法,只需要一点提醒!