`
paulwong
  • 浏览: 74320 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Spring Module---cache

阅读更多
项目需要缓存,google了一下,发现spring module有现成的东西可用,随即拿来看看。发现还是比较好用的。
改cache采用了aop的方式进行cache的写入和刷出。使用spring风格,上手容易。
系统负载不高,因此对于该缓存方法的性能等等不做评价,目前满足需要。
使用方法:
有这么几个概念需要提前知道1.XXCacheFacade,比如如果是oscache,那么XX就是oscachefacade.该类负责缓存的写入和刷出

<bean id="oscacheFacade" class="org.springmodules.cache.provider.oscache.OsCacheFacade">  
    
<property name="failQuietlyEnabled" value="true"/>  
    
<property name="cacheManager">  
        
<bean id="oscacheManager" class="org.springmodules.cache.provider.oscache.OsCacheManagerFactoryBean"/>  
    
</property>  
  
</bean>  


里面的cacheManager必须要有,改类负责提供底层具体的cache实现,比如oscache或者EHcache等。
2.MethodMapCachingInterceptor这个拦截器是官方提供的同类型的拦截器之一,根据方法名,参数匹配拦截。

<bean id="cachingInterceptor001" class="org.springmodules.cache.interceptor.caching.MethodMapCachingInterceptor">  
    
<property name="cacheProviderFacade" ref="oscacheFacade"/>  
    
<property name="cachingModels">  
        
<props>  
            
<prop key="com.company.jncz.TestItIF.get*">groups=aa;refreshPeriod=10</prop>  
            
<prop key="com.company.jncz.TestItIF.load*">groups=bb;refreshPeriod=10</prop>  
        
</props>  
    
</property>  
  
</bean>  


注意cachingModels。有两种方式写法,一种是上面看到的使用props另一种是使用Map.在有些情况下只能使用Map方式,下面解释

<map>  
  
<entry key="com.company.jncz.TestIt.get*">  
    
<ref local="oscacheCachingModel"/>  
  
</entry>  
</map>  

 

 

<bean id="oscacheCachingModel" class="org.springmodules.cache.provider.oscache.OsCacheCachingModel">  
    
<property name="groups">  
            
<list>  
               
<value>aa</value>  
               
<value>bb</value>  
            
</list>  
       
</property>  
    
<property name="refreshPeriod" value="10"/>  
 
</bean>  


尤其当groups(对于oscache来说是groups)的值不止一个的时候,就需要使用map的方式。
否则不生效(也许还有什么我没有注意到).另外需要注意的是对于model来说他的key很重要。有以下需要注意:如果AImpl是A接口的实现类,而且你在其他地方使用时都是用A接口来声明的,那么key就必须写成接口的全限定名比如:com.company.jncz.A.getXX,否则无法识别。

 

对于与cachingModel相对应的flushingModel写法是类似的,参考api很容易写出来。

最后

<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">  
        
<property name="beanNames">  
            
<value>*Service</value>  
        
</property>  
        
<property name="interceptorNames">  
            
<list>  
                
<value>cachingInterceptor001</value>  
                
<value>flushingInterceptor001</value>  
            
</list>  
        
</property>  
  
</bean>  
  
<bean id="testService" class="com.company.jncz.TestItStub"/>  


这些不做介绍。
总之比较简单。这两天感冒,昏昏沉沉,不知道有没有表达清楚。。。。

 

自己看了一眼,的确没说清楚,要清楚的几个概念是cacheFacade.CachingModel.FlushingModel.CachingInterceptor.FlushingInterceptor.这些算是比较重要的。其他aop内容略。caching拦截器拦截某方法,根据cachingModel定义的规则由cacheFacade将之放入cache。flushing拦截器拦截到某方法,根据flushingModel定义的规则由cacheFacade将对应的cache清除。嗯,基本上流程就这样子了。

分享到:
评论

相关推荐

    spring-boot-reference.pdf

    Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...

    Spring中AOP实现EHCache的整合中采用SpringModule结合(二)

    首先,我们需要理解Spring Modules(SpringModule)项目,这是一个为Spring框架提供额外功能的开源项目,它包含了对包括EHCache在内的多种缓存系统的支持。SpringModule使得在Spring中集成缓存变得更加方便,通过...

    基于Dubbo实现的SOA分布式(没有实现分布式事务)-SpringBoot整合各种组件的JavaWeb脚手架+源代码+文档

    - Spring Cache - Swagger - Spring Test - MockMvc - HTTPS - Spring DevTools - Spring Actuator - Logback+Slf4j多环境日志 - i18n - Maven Multi-Module - WebSocket - ElasticSearch # 功能们: ## 用户模块 ...

    dubbo、dubbox编译所需jar包

    cache-api-0.4.jar cglib-nodep-2.2.jar citrus-webx-all-3.0.8.jar classworlds-1.1-alpha-2.jar classworlds-1.1.jar commons-beanutils.jar commons-cli-1.0.jar commons-collections-3.2.jar commons-digester-...

    jeesite所需要的lib包

    Spring Cache抽象层则提供了统一的缓存管理接口,使得更换缓存策略变得更加灵活。 5. 消息队列:RabbitMQ或Kafka等消息中间件,用于异步处理任务,解耦业务组件,提高系统并发处理能力。在Jeesite中,它们常用于...

    sprintbotcode.docx

    3. **dependencies**:这里引入了`spring-boot-maven-plugin`和`maven-shade-plugin.log4j2-cachefile-transformer`的依赖。`spring-boot-maven-plugin`是Spring Boot提供的打包插件,用于生成可执行的JAR。`log4j2-...

    spring2+hibernate3典型配置

    在本实例中,主要包括以下四个核心配置文件:`applicationContext-resources.xml`、`applicationContext-database.xml`、`applicationContext-database-hibernate.xml` 和 `applicationContext-module.xml`。...

    基于最新的Java 21和SpringBoot 3.2 根据eladmin项目进行改造+源代码+文档说明

    - 使用最新技术栈,社区资源丰富,基于Java 21(Core Module Support 17-21)、Spring Boot 3.2。 (Support Virtual Threads/fibre/loom) - 基于注解的动态查询(Specification),可根据需要扩充查询注解。 - 支持...

    matlab代码循环运行-ODENumerical-exp:ODENumerical-exp

    Spring学期常微分方程数值解法课程报告 编译环境 编译环境为 Win10 20H2+TeX Live 2021 + python 3.8.5 + Python module Pygments 2.8.1 字体部分使用了外部字体 , 与 , 点击字体名即可获取下载链接, 下载字体后右键...

    JAVA公共资源模块的设计与开发(源代码+论文).zip

    在Java中,我们可以利用模块系统(如Java 9及更高版本的Jigsaw项目)来实现这一点,通过定义模块描述符(`module-info.java`)来声明模块的依赖关系和导出的包。 其次,资源的管理通常涉及到I/O操作,Java的`java.io`...

    SiteMesh教程及SiteMesh官方文档翻译

    &lt;property name="cache" value="true"/&gt; ``` **Freemarker模板** ```ftl &lt;!DOCTYPE html&gt; ${title} &lt;h1&gt;Welcome to our site! ``` 通过这种方式,可以实现完全RESTful风格的支持,使得前端...

    SpringBootLearning_forezp.tar.gz

    SpringBoot非官方教程 | 第十三篇:springboot集成spring cache 消息队列 SpringBoot非官方教程 | 第十四篇:在springboot中用redis实现消息队列 SpringBoot非官方教程 | 第十五篇:Springboot整合RabbitMQ 网络...

    Nginx与Tomcat集群配置 Redis配置

    12. **统一认证**:使用Spring Security或自定义过滤器实现基于Redis的认证,存储用户会话信息,确保用户在集群中的任何一台服务器登录后,其他服务器都能识别其会话。 ### Redis配置 13. **安装Redis**:安装...

    40种网页常用小技巧

    2. **缓存管理**:利用HTTP缓存机制,如设置合适的Expires和Cache-Control头,可以减少不必要的服务器请求,提高页面加载速度。 3. **响应式设计**:通过CSS3媒体查询实现不同设备的适配,确保网页在手机、平板和...

    JAVA公共资源模块的设计与开发(源代码+).rar

    4. **配置管理**:可能有一个`ConfigManager`模块,负责加载和管理配置文件,如使用Apache Commons Configuration或Spring Cloud Config。 5. **其他通用服务**:可能还有用于文件操作、网络通信、加密解密等功能的...

    网络架构师148讲视频课程

    │ 第10节:Spring+Mybatis实现DAO.avi │ 第11节:Mybatis的分页实现.avi │ 第12节:Service的实现以及模块化.avi │ 第13节:Spring MVC实现Web层开发.avi │ 第14节:新增和列表页面和分页tag.avi │ 第15节:带...

Global site tag (gtag.js) - Google Analytics