配置ehcache地址:
http://code.google.com/p/ehcache-spring-annotations/wiki/UsingTriggersRemove
hi :
大家好,我目前使用的是spring ehcache作为项目的缓存.详细配置如下:
ehcaceh_config.xml
<?xml version="1.0" encoding="utf-8"?>
<beans default-autowire="byName"
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring
http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.1.xsd">
<ehcache:annotation-driven cache-manager="ehCacheManager" />
<bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
<property name="configLocation" value="/WEB-INF/classes/ehcache.xml"></property>
</bean>
</beans>
ehcache.xml
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">
<diskStore path="java.io.tmpdir/EhCacheSpringAnnotationsExampleApp"/>
<defaultCache
maxElementsInMemory="100"
eternal="false"
timeToIdleSeconds="3000"
timeToLiveSeconds="3000"
overflowToDisk="true"
diskSpoolBufferSizeMB="30"
maxElementsOnDisk="100"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="100"
memoryStoreEvictionPolicy="LRU"
statistics="false"
/>
<cache name="UserCache"
maxElementsInMemory="100"
maxElementsOnDisk="100"
eternal="false"
overflowToDisk="true"
diskSpoolBufferSizeMB="20"
timeToIdleSeconds="100"
timeToLiveSeconds="100"
memoryStoreEvictionPolicy="LFU"
transactionalMode="off"
/>
</ehcache>
@Cacheable(cacheName="userCache")
public ConcurrentMap<Integer, UserModel> getAllUserInfoMap() {
List<UserModel> list = (List<UserModel>) getSqlMapClientTemplate()
.queryForList("user.SELECT_USER_ALL_INFO");
ConcurrentMap<String, UserModel> userMap = null;
if (CollectionUtils.isNotEmpty(list)) {
userMap = new ConcurrentHashMap<String, UserModel>();
for (UserModel userModel : list) {
userMap.put(userModel.getId(), userModel);
}
}
return userMap;
}
@TriggersRemove(cacheName="userCache",removeAll=true)
public void insertUser(UserModel userModel){
getSqlMapClientTemplate().insert("user.INSERT_USER_POJO", userModel);
}
代码都贴出来了,ehcache的内部机制我不太了解。希望大家指点一下。
现在是这样的场景,先在action 中调用getAllUserInfoMap 方法,ehcache会把所有的数据都放到cache中。
然后在action中调用insertUser方法。如果在insert 方法中不使用@TriggersRemove(cacheName="userCache",removeAll=true)
ehcache不会把新增的数据同步到cache中。但是如果这里把cache remove了以后。下次调用getAllUserInfoMap 方法时候就会重新查询一下数据库。这样就跟我们前期想要的效果不符。实际缓存的意义就不大了。
或许我没把ehcache的原理吃透。所以请大家指点一下。因为项目没有集群所以不考虑用memcached。大家有好的cache方案可以尽情提出来。谢谢大家。
分享到:
相关推荐
这里的`DwrSpringServlet`是DWR与Spring集成的Servlet,它会自动扫描Spring配置,寻找带有`@RemoteProxy`注解的类。`debug`参数控制DWR的调试模式,`crossDomainSessionSecurity`参数用于跨域安全性设置。 为了使...
在Spring 2.5中,最重要的改进之一是对Java 5的全面支持,包括注解(Annotations)和泛型(Generics)。这一变化使得开发者能够更方便地使用依赖注入,通过在类或方法上直接使用注解来声明依赖,而不是依赖XML配置。...
它可能会重点介绍新特性,如XML配置的简化(如@Annotations)、Bean定义的增强(如Prototype scope和Lazy initialization)、表达式语言(Spring Expression Language, SpEL)以及对JSR-303 Bean Validation的支持。...
3. **Java配置**:除了传统的 XML 配置外,Spring 2.5 开始支持 Java 类进行配置(`@Configuration` 和 `@Bean` 注解),这种方式更符合 Java 开发者的习惯,也更易于理解和维护。 4. **AOP增强**:Spring 2.5 在 ...
总之,Struts2.0、Spring2.5和Hibernate3.2的组合为Java Web开发提供了一个强大、灵活的解决方案,通过合理的配置和使用,可以构建出高效且易于维护的企业级应用。这个压缩包集合就是为了解决集成中的常见问题,帮助...
它大大简化了在Spring应用中基于业界使用广泛的Ehacche-2.0版本实现缓存的技术,1.1.2版本的ehcache-spring-annotations刚刚发布不久,在本文中,我将会介绍如何在一个web工程时使用ehcache-spring-annotations实现...
ehcache-spring-annotations-1.2.0.jar
它允许通过注解(Annotations)进行依赖配置,例如`@Autowired`、`@Qualifier`和`@Resource`,减少了XML配置文件的使用,提高了代码的可读性和可维护性。 2. **注解支持增强**:Spring 2.5 引入了对Java 5和6注解的...
本文将详细介绍如何在Windows XP环境下,使用MyEclipse 7.0和Tomcat 6.0容器,配置一个基于Hibernate 3.2、Spring 2.5和Struts2.1的项目。 首先,创建一个新的Web工程,命名为"ssh",选择Java EE 5.0规范。接着,...
ehcache-spring-annotations-1.1.2.jar
在本文中,我们将详细探讨如何配置一个基于Java的Web应用程序,使用Hibernate3.2作为持久层框架,Spring2.5作为应用上下文管理和依赖注入工具,以及Struts2.1作为MVC框架。这个组合通常被称为SSH(Struts2、Spring、...
《Spring Framework 2.5 开发参考手册》是Spring框架的重要文档,主要涵盖了Spring 2.5版本的核心特性和使用方法。Spring是一个开源的应用程序框架,它为Java平台提供了全面的基础设施支持,使得开发者能够更方便地...
Spring 2.5 引入了对 JSR-250(Common Annotations for the Java Platform)的支持,使得在类和方法上使用注解来声明切面变得更为方便。`org.springframework.aop` 包中的类和接口展示了 AOP 的实现,包括切面...
然后在Spring2.5的配置文件(如applicationContext.xml)中,声明并注入需要的bean,包括Action类、Service类和DAO类。最后,通过配置Hibernate的sessionFactory和transactionManager,使Spring管理Hibernate的生命...
#Spring 属性注释扩展的 PropertyPlaceHolderConfigurer 使用注解将配置属性注入到 Spring 组件中。 注意:Spring 3 现在支持使用 @Value 注释的容器的。 该项目仅用于 Spring 2.5.x 支持。 ##入门Spring房产注解...
9. **common-annotations.jar**:包含JSR-250规范定义的标准注解,如@PostConstruct和@PreDestroy,这些注解在Spring中用于标记初始化和销毁方法,使得Spring容器能够自动调用。 综上所述,Spring 2.5的Jar包集合...
1. **依赖注入(Dependency Injection, DI)**:Spring 2.5对依赖注入进行了进一步优化,使得在配置文件中更加灵活地管理对象间的依赖关系。支持基于注解的依赖注入,开发者可以在类的字段或方法上使用`@Autowired`、`...
**Spring2.5配置** 1. **引入Spring库**:Spring的核心库包括spring-context、spring-beans、spring-aop、spring-web和spring-webmvc等。这些JAR包同样放入`WEB-INF/lib`目录。 2. **配置Spring**:在`WEB-INF`目录...
Struts1.2、Hibernate3.5和Spring2.5是经典的Java企业级开发框架组合,被称为SSH(Struts-Spring-Hibernate)架构。这个框架集合提供了强大的模型-视图-控制器(MVC)设计模式支持,数据持久化以及依赖注入等功能,...