ehcache注解全面解析---打酱油的日子
2016-06-01 15:33
477 查看
通过ehcache以编程方式使用缓存:
跟上面的方式相同,但是缓存通过ehcache去管理,当然比使用map有N多种好处,比如缓存太大了快达到上限之后,将哪一部分缓存清除出去。这种方式完全是通过代码的方式使用ehcache缓存,虽然自由,却也很麻烦;有些比如单纯的场景下,不需要如此麻烦,直接通过注解就行了。
以前在Spring项目中要通过注解的方式使用缓存,比如借助一个jar包:ehcache-spring-annotations.jar,可以在googlecode上面下载,不过已经很久没有更新过了。
View Code
共有两个注解:
@Cacheabele :指定方法使用缓存
@TriggersRemove :从缓存中移除对象
在查询的方法上使用缓存:
在删除或更新的方法上清空缓存:
跟上面的方式相同,但是缓存通过ehcache去管理,当然比使用map有N多种好处,比如缓存太大了快达到上限之后,将哪一部分缓存清除出去。这种方式完全是通过代码的方式使用ehcache缓存,虽然自由,却也很麻烦;有些比如单纯的场景下,不需要如此麻烦,直接通过注解就行了。
以前在Spring项目中要通过注解的方式使用缓存,比如借助一个jar包:ehcache-spring-annotations.jar,可以在googlecode上面下载,不过已经很久没有更新过了。
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:osgi="http://www.springframework.org/schema/osgi" xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi-1.2.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"> <context:component-scan base-package="com.mpr.mprsp.mcrc.service.mcrs.precedencecode" /> <!-- ehcache config Start --> <ehcache:annotation-driven /> <ehcache:config cache-manager="cacheManager"> <ehcache:evict-expired-elements interval="60" /> </ehcache:config> <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation" value="osgibundlejar:/META-INF/ehcache/ehcache.xml" /> </bean> <!-- ehcache config End --> <tx:annotation-driven transaction-manager="txManager" /> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg ref="sqlSessionFactory" /> </bean> <!-- 定时任务开始 --> <!-- 线程执行器配置,用于任务注册 --> <bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="10" /> <property name="maxPoolSize" value="100" /> <property name="queueCapacity" value="500" /> </bean> <!-- 业务对象 --> <bean id="timerTask" class="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.internal.TimerTask" /> <!-- 调度业务 update by wangtao 20130715 --> <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="timerTask" /> <property name="targetMethod" value="serviceTimerTask" /> </bean> <!-- 测试 --> <bean id="taskTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="jobDetail" /> <!-- 延迟10秒启动 --> <property name="startDelay" value="10000" /> <!-- 每隔20秒执行一次 --> <property name="repeatInterval" value="20000" /> </bean> <!-- 增加调度触发器 --> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="jobDetail" /> <!-- 每天晚上11点触发 --> <property name="cronExpression" value="0 0 23 * * ?" /> </bean> <!-- 增加调度触发器 add by wangtao 20130715 --> <bean id="autoApplyCodeCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="jobDetail" /> <!-- 每天中午12点触发 --> <property name="cronExpression" value="0 0 12 * * ?" /> </bean> <!-- 设置调度 update by wangtao 20130715 --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <!-- <ref bean="cronTrigger" /> --> <ref bean="cronTrigger" /> </list> </property> <property name="taskExecutor" ref="executor" /> </bean> <!-- 定时任务结束 --> <!-- 引入服务 --> <!-- 引入文件服务器同步 --> <osgi:reference id="fileSyncManager" interface="com.mpr.mprsp.mcrc.service.mcrs.upload.service.IFileSyncManager" /> <!-- 引入系统配置项 --> <osgi:reference id="sysConfigManager" interface="com.mpr.mprsp.mcrc.service.mcrs.configuration.service.ISysConfigManager" /> <!-- 引入邮件管理 --> <osgi:reference id="mailSendManager" interface="com.mpr.mprsp.mcrc.email.service.IMailSendManager" /> <!-- 引入SqlSessionFactory --> <osgi:reference id="sqlSessionFactory" interface="org.apache.ibatis.session.SqlSessionFactory" bean-name="sqlSessionFactory" /> <!-- 引入DataSourceTransactionManager --> <osgi:reference id="txManager" interface="org.springframework.jdbc.datasource.DataSourceTransactionManager" bean-name="txManager" /> <!-- 引入ParametersMapBuilder --> <osgi:reference id="parametersMapBuilder" interface="com.isoftstone.agiledev.core.query.mybatis.ParametersMapBuilder" bean-name="parametersMapBuilder" /> <!-- 暴露服务 --> <!-- 暴露MPR出版物内容类型 --> <osgi:service ref="publicationContentTypeManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IPublicationContentTypeManager" /> <!-- 暴露语种管理 --> <osgi:service ref="languageManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.ILanguageManager" /> <!-- 暴露码段管理 --> <osgi:service ref="mprCodeSegmentManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IMprCodeSegmentManager" /> <!-- 暴露预警阀值 --> <osgi:service ref="mprCodeThresholdManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IMprCodeThresholdManager" /> <!-- 暴露MPR前置码生效信息管理 --> <osgi:service ref="caroperInfoSyncManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.ICaroperInfoSyncManager" /> <!-- 暴露MPR前置码文件管理 --> <osgi:service ref="mprFileManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IMprFileManager" /> <!-- 暴露撤销记录管理 --> <osgi:service ref="revocationStatsManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IRevocationStatsManager" /> <!-- 暴露废除记录管理 --> <osgi:service ref="abolishStatsManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IAbolishStatsManager" /> <!-- 暴露图书业务管理 --> <osgi:service ref="publicationManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IPublicationManager" /> <!-- 暴露 期刊业务管理 --> <osgi:service ref="periodicalManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IPeriodicalManager" /> <!-- 暴露报纸业务管理 --> <osgi:service ref="newsPaperManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.INewsPaperManager" /> <!-- 暴露音像业务管理 --> <osgi:service ref="audioManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IAudioManager" /> <!-- 暴露(组区)MPR出版物管理 --> <osgi:service ref="publicationAreaManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IPublicationAreaManager" /> <!-- MPR出版物视图服务类 --> <osgi:service ref="publicationViewManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IPublicationViewManager" /> <!-- MPR 资源类 --> <osgi:service ref="mprCodeResourceManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IMprCodeResourceManager" /> <!-- 关联关系管理 --> <osgi:service ref="isliMprCodeRelationManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IIsliMprCodeRelationManager" /> <!-- option 下拉选框数据 --> <osgi:service ref="optionManager" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IOptionManager" /> <osgi:service ref="apiPublicationService" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IApiPublicationService" /> <!-- openservice 暴露前置编码服务接口 --> <osgi:service ref="openService" interface="com.mpr.mprsp.mcrc.service.mcrs.precedencecode.service.IOpenService" /> <osgi:reference id="sysLogManager" interface="com.mpr.mprsp.mcrc.service.mcrs.system.service.ISysLogManager"/> <osgi:reference id="statsMprManager" interface="com.mpr.mprsp.mcrc.service.mcrs.statistics.service.IStatsMpr" /> <osgi:reference id="statsPublication" interface="com.mpr.mprsp.mcrc.service.mcrs.statistics.service.IStatsPublication" /> <osgi:reference id="statsPublisher" interface="com.mpr.mprsp.mcrc.service.mcrs.statistics.service.IStatsPublisher" /> <osgi:reference id="publisherGroupManager" interface="com.mpr.mprsp.mcrc.service.mcrs.publisher.service.IPublisherGroupManager" /> </beans>
View Code
共有两个注解:
@Cacheabele :指定方法使用缓存
@TriggersRemove :从缓存中移除对象
在查询的方法上使用缓存:
@SuppressWarnings("unchecked") @Cacheable(cacheName = "publicationsCache") public List<PublicationViewInfo> query(PublicationViewInfoParams params) throws Exception
在删除或更新的方法上清空缓存:
@Override @TriggersRemove(cacheName = {"publicationsCache"}, when = When.AFTER_METHOD_INVOCATION, removeAll = true) public int hiddenResource(Long resourceId, String publicationType, Boolean isHidden) throws Exception {
相关文章推荐
- 【C语言】09-字符串
- 圆,半径自适应外层高度
- Java 集合框架 ArrayList 源码剖析
- Linux与Windows之间ftp自动传输文件
- Java学习之路(第四天)
- C++类型转换
- 【JS 设计模式 】观察者模式之实时改变页面中的金额数
- 【转】PowerPC平台linux设备移植
- Solr --- Stats聚合统计
- Java如何连接多实例SQL Server?
- Android最新的Tint,能玩出什么花?
- webdriver获得文本
- android 动态设置TextView字体大小
- svn之Cornerstone用法 之project.pbxproj解决冲突
- flex布局教程(实例篇)
- 安卓侧边 4000 栏实现
- 内存泄露从入门到精通三部曲之三 :常见原因与用户实践
- js里面parseInt()在ie6 7 8及低版本火狐、Opera、Safari、Chrome浏览器中的一个兼容性问题
- java之序列化
- 处理使用top提示terminal is not big enough