【发布时间】:2015-11-02 15:38:38
【问题描述】:
我想在我的应用程序中缓存一些数据库表,因为表中的内容每天只更新一次。
我让 Spring Cache 像这样工作:
@Service("stuffManager")
public class StuffManagerImpl implements StuffManager {
@Autowired
private StuffDao stuffDao;
@Override
@Cacheable("stuffCache")
public List<Stuff> getAllStuff() {
return stuffDao.getAllStuff();
}
}
@Repository("stuffDao")
public class StuffDaoHibernate implements StuffDao {
@Override
public List<Stuff> getAllStuff() {
return getHQLResult("select* from Stuff", null);
}
}
但是如果我的getAllStuff-method 看起来像这样但我只想缓存Stuff-table,是否可以使用 Spring Cache?
@Repository("stuffDao")
public class StuffDaoHibernate implements StuffDao {
@Override
public List<Stuff> getAllStuff() {
return getHQLResult("select Stuff.* from Stuff inner join OtherStuff on Stuff.Id = OtherStuff.Id", null);
}
}
【问题讨论】:
-
1.你用@Cacheable注解的方法应该有方法args,这样你下次可以用arg值作为key来检索2.Spring缓存提供了抽象来存储java对象在底层缓存。由您决定如何填充您的 java 对象。
-
@AmitParashar 你能澄清一下这如何解决我的问题吗?
标签: java spring spring-cache