- 浏览: 1541209 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (225)
- JAVA (27)
- Spring (49)
- Linux (51)
- JavaScript (8)
- Scrum (23)
- IDE (2)
- JSON (2)
- Solr (0)
- Webharvest (0)
- Hibernate (8)
- 杂谈 (3)
- Windows 7 (4)
- 持续集成 (23)
- tomcat (3)
- Android (1)
- SpringSecurity (11)
- Maven (9)
- jotm (3)
- C3P0 (1)
- Active Directory (2)
- cas (1)
- JQuery (2)
- ajax (1)
- plsql (2)
- nginx (4)
- apache (1)
- thrift (7)
- python (3)
- oracle (4)
- php (2)
- redis (1)
- fedora (1)
- windows7 (0)
- SVN (1)
- NFS (1)
- SAMBA (1)
- Atomikos (1)
- apache-poi (1)
- mysql (2)
- vncserver (1)
- mac (2)
- firefox (1)
- JIRA (1)
- p6spy (1)
- git (1)
- github (1)
- gitlab (1)
- gogs (1)
- Druid (1)
- MyBatis (1)
- docker (8)
- zabbix (1)
最新评论
-
lialatd:
您好,我用您的方法通过java api往jira系统中添加is ...
JIRA REST API ---- JAVA -
sprcen945:
可以了,是因为没加intercept-url 的拦截, 尼玛, ...
SpringSecurity3.X--Cas client 配置 -
sprcen945:
请问为什么我配了security.xml后切入点不起作用(之前 ...
SpringSecurity3.X--Cas client 配置 -
linxingyul:
根据楼主的代码 继承了WebMvcConfigurationS ...
SpringMVC4零配置--Web上下文配置【MvcConfig】 -
java_老头:
MvcConfig.java的FilterType.ANNOT ...
SpringMVC4零配置--Web上下文配置【MvcConfig】
之前为大家介绍了如何使用spring注解来进行缓存配置 (EHCache 和 OSCache)的简单的例子,详见
Spring基于注解的缓存配置--EHCache AND OSCache
现在介绍一下如何在基于注解springMVC的web应用中使用注解缓存,其实很简单,就是将springMVC配置文件与缓存注解文件一起声明到context中就OK了。
下面我就来构建一个基于spring注解小型的web应用,这里我使用EHCache来作为缓存方案。
首先来看一下目录结构,如下:
jar依赖:
ehcache-core-1.7.2.jar
jakarta-oro-2.0.8.jar
slf4j-api-1.5.8.jar
slf4j-jdk14-1.5.8.jar
cglib-nodep-2.1_3.jar
commons-logging.jar
log4j-1.2.15.jar
spring-modules-cache.jar
spring.jar
jstl.jar
standard.jar
接着我们来编写web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="WebApp_ID" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>SpringCacheWeb</display-name> <!-- 由spring加载log4j --> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <!-- 声明spring配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring-servlet.xml </param-value> </context-param> <!-- 使用UTF-8编码 --> <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping> <!-- 负责初始化log4j--> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <!-- 负责初始化spring上下文--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- springMVC控制器--> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <session-config> <session-timeout>10</session-timeout> </session-config> <welcome-file-list> <welcome-file>index.jsp</welcome-file> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> </welcome-file-list> </web-app>
接着我们来编写spring-servlet.xml
<?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:ehcache="http://www.springmodules.org/schema/ehcache" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springmodules.org/schema/ehcache http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd" default-lazy-init="true"> <!--启用注解 定义组件查找规则 --> <context:component-scan base-package="com.netqin"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:include-filter type="annotation" expression="org.springframework.stereotype.Service" /> <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository" /> </context:component-scan> <!-- 视图查找器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"> </property> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 加载ehcache缓存配置文件 说明:在这里我遇到了这样一个问题,当使用@Service等注解的方式将类声明到配置文件中时, 就需要将缓存配置import到主配置文件中,否则缓存会不起作用 如果是通过<bean>声明到配置文件中时, 则只需要在web.xml的contextConfigLocation中加入applicationContext-ehcache.xml即可, 不过还是推荐使用如下方式吧,因为这样不会有任何问题 --> <import resource="classpath:applicationContext-ehcache.xml"/> </beans>
ok,我们接着编写applicationContext-ehcache.xml,还记得之前介绍的基于命名空间的配置吗,如下:
<?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:ehcache="http://www.springmodules.org/schema/ehcache" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springmodules.org/schema/ehcache http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd"> <ehcache:config configLocation="classpath:ehcache.xml" id="cacheProvider" /> <ehcache:annotations providerId="cacheProvider"> <ehcache:caching cacheName="testCache" id="testCaching" /> <ehcache:flushing cacheNames="testCache" id="testFlushing" /> </ehcache:annotations> </beans>
ehcache.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" updateCheck="true" monitoring="autodetect"> <diskStore path="java.io.tmpdir"/> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" maxElementsOnDisk="10000000" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> <cache name="testCache" maxElementsInMemory="10000" maxElementsOnDisk="1000" eternal="false" overflowToDisk="true" diskSpoolBufferSizeMB="20" timeToIdleSeconds="300" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LFU" /> </ehcache>
ok,配置文件都完成了,接着我们来编写controller、service和dao
1.CacheDemoController:
package com.netqin.function.cacheDemo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class CacheDemoController { @Autowired private CacheDemoService service; @RequestMapping("/demo.do") public String handleIndex(Model model) { System.out.println(service.getName(0)); model.addAttribute("name", service.getName(0)); return "cacheDemo"; } @RequestMapping("/demoFulsh.do") public String handleFulsh(Model model) { service.flush(); return "cacheDemo"; } }
2.CacheDemoService :
package com.netqin.function.cacheDemo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springmodules.cache.annotations.CacheFlush; import org.springmodules.cache.annotations.Cacheable; @Service public class CacheDemoService { @Autowired private CacheDemoDao dao; @Cacheable(modelId = "testCaching") public String getName(int id){ System.out.println("Processing testCaching"); return dao.getName(id); } @CacheFlush(modelId = "testFlushing") public void flush(){ System.out.println("Processing testFlushing"); } }
我们只对service层加入了注解缓存配置。
接着我们来写一个简单的页面,cacheDemo.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> CacheDemo:${name} </body> </html>
ok,一切就绪,我们启动服务器,并访问http://localhost:8080/cache/demo.do
多请求几次,请求两次的输出结果:
Processing testCaching
NameId:0
NameId:0
说明缓存起作用了,ok!
接着我们刷新该缓存,访问http://localhost:8080/cache/demoFulsh.do
再请求http://localhost:8080/cache/demo.do
输出结果:
Processing testCaching
NameId:0
NameId:0
Processing testFlushing
Processing testCaching
NameId:0
缓存刷新成功。
评论
访问http://localhost:8080/cache/demo.do
请求两次的输出结果:
Processing testCaching
NameId:0
NameId:0
接着我们刷新该缓存,访问http://localhost:8080/cache/demoFulsh.do
输出结果:
Processing testFlushing
再请求http://localhost:8080/cache/demo.do
输出结果:
Processing testCaching
NameId:0
404是因为你项目名字都没有改,把访问的路径中的cache改成你的项目名称
发表评论
-
Druid学习笔记
2016-10-07 11:55 2513官方网站:https://github.com/aliba ... -
Spring Cache注解+Redis
2015-01-15 13:36 54512Spring3.1 Cache注解 依赖jar包: ... -
Spring Cache注解+Memcached
2015-01-12 16:11 20485Spring3.1 Cache注解 依赖jar包: ... -
Spring4+Hibernate4+Atomikos3.3多数据源事务管理
2014-09-25 10:46 8419Spring3+后不再对JTOM提供支持,所以可以改用At ... -
SpringMVC4零配置--Web上下文配置【MvcConfig】
2014-09-10 18:22 73489与SpringSecurity的配置类似,spring同样 ... -
SpringMVC4零配置--SpringSecurity相关配置【SpringSecurityConfig】
2014-09-10 18:22 72020SpringSecurity的配置相对来说有些复杂,如果 ... -
SpringMVC4零配置--应用上下文配置【AppConfig】
2014-09-10 18:21 26587从spring3.0开始,Spring将JavaConfi ... -
SpringMVC4零配置--web.xml
2014-09-10 18:21 98745servlet3.0+规范后,允许servlet,filt ... -
SpringMVC4零配置
2014-09-05 19:11 90036基于Servlet3.0规范和SpringMVC4注解式配 ... -
SpringSecurity3.X--LDAP:AD配置
2014-07-08 17:08 5581前面介绍过基于本地数据库验证的方式,参考http://ha ... -
Thrift--JSClient
2013-09-26 14:45 6014thrift提供了基于jquery--ajax的客户端调用 ... -
Thrift--Spring集成ThriftServlet
2013-09-25 11:42 11152Thrift除了可以通过TCP协议访问,还可以通过HTTP ... -
Thrift转SpringHttpInvoker
2013-09-24 13:26 1797关于在spring中集成Thrift请参看:http://h ... -
Spring集成Thrift--Server AND Client
2013-09-04 20:13 13788Thrift网上有N多教程, ... -
C3P0配置实战
2012-09-04 18:34 51930C3P0: 一个开源的JDBC连接池,它实现了数据源和JN ... -
spring+jotm 多数据源事务管理(三)JNDI+Tomcat
2012-06-07 16:27 5307spring+jotm 多数据源事务管理系列 spr ... -
spring+jotm 多数据源事务管理(二)hibernate
2012-06-07 11:20 2901spring+jotm 多数据源事务管理系列 spr ... -
spring+jotm 多数据源事务管理(一)jdbc
2012-06-07 11:00 5306spring+jotm 多数据源事务管理系列 spr ... -
SpringSecurity3.X--Cas client 配置之配置session-management遇到的问题(2)
2011-10-27 14:19 2160关于“SpringSecurity3.X--Cas clien ... -
SpringSecurity3.X--Cas client 配置之配置session-management遇到的问题
2011-10-26 18:56 7947关于“SpringSecurity3.X--Cas ...
相关推荐
本教程聚焦于Spring Boot 2.4版本,针对初学者提供一个完整的RESTful CRUD(创建、读取、更新、删除)操作实例,结合尚硅谷B站教程进行讲解。对于已经熟悉Spring Boot 1.5的老手来说,这个教程可能会揭示2.4版本的...
Spring支持基于注解的触发(如`@CacheEvict`)和监听缓存事件进行更新。 通过以上概念的介绍,我们可以看到Spring缓存机制的灵活性和强大性。在实际项目中,正确理解和使用这些特性,可以显著提高系统的响应速度,...
本实例完美的实现了Spring基于注解整合Redis,只需在相应方法上加上注解便可实现操作redis缓存的功能,具体实现方法与运行测试方法请参见博文:http://blog.csdn.net/l1028386804/article/details/52141372
Spring缓存抽象是基于Java的注解驱动的,它提供了声明式缓存管理。核心组件包括`@Cacheable`、`@CacheEvict`、`@CachePut`等注解,这些注解可以直接应用在方法上,指示Spring在适当的时候进行缓存操作。 1. `@...
《Spring Boot与MyBatis深度整合指南》 在Java开发领域,Spring Boot以其简洁的...在实际应用中,开发者可以根据项目需求选择合适版本,并利用Spring Boot的自动化配置和MyBatis的灵活性,打造高效稳定的数据访问层。
在缓存、Web和JMS方面也做了增强,进一步提高了Spring应用的性能和易用性。 Spring Framework 4.3中仍然继续优化测试功能,以提高开发效率和质量。 在核心技术部分,Spring IoC容器是Spring框架的基石,提供了依赖...
本篇将深入探讨Spring缓存实例,基于给出的博客链接(http://blog.csdn.net/maoyeqiu/article/details/50433934)和文件"20140527demoSpringCache",我们将全面解析Spring缓存的使用方法和实践场景。 首先,Spring...
**Spring+EhCache缓存实例详解** 在现代的Java企业级应用中,缓存技术扮演着至关重要的角色,它能够显著提升系统性能,减少数据库负载。Spring框架与EhCache的结合,为开发者提供了一种高效、易用的缓存解决方案。...
ehcache全解析 利用Spring和EHCache缓存结果 Hibernate+ehcache二级缓存技术 Spring基于注解的缓存配置--web应用实例 http://zjava.org.ru/
**Spring Redis 缓存实例详解** 在现代的Web应用程序开发中,缓存是提高系统性能的关键技术之一。Spring框架提供了一种优雅的方式来整合缓存管理,其中包括对Redis的支持。Redis是一个开源的、高性能的键值数据库,...
在基于 Spring 2.5 的项目中,XML 配置是主要的配置方式,相比于后来版本中的注解配置,XML 配置更显传统但同样强大。 **1. Spring MVC 的核心组件** - **DispatcherServlet**: 作为前端控制器,接收所有的 HTTP ...
- **性能优化**:可能包含缓存机制(如Spring Cache或MyBatis的二级缓存)以提高性能,以及数据库连接池配置,如Druid或HikariCP。 4. **测试**:源码库可能包含了JUnit或Mockito等测试工具的使用,以确保代码质量...
Spring AOP支持使用@AspectJ注解的方式来定义切面,也支持基于schema的AOP配置。 Spring Framework 4.x版本中还不断改进了对WebSocket的支持,这允许开发者为Web应用程序添加实时双向通信功能,从而可以创建更为...
本文将深入探讨如何结合Spring AOP与EhCache实现一个简单的缓存实例,以便优化Java应用的运行效率。 首先,让我们了解Spring AOP。Spring AOP是Spring框架的一部分,它允许我们在不修改业务代码的情况下,通过定义...
- **缓存改进**:增强了缓存支持,提供更灵活的配置选项。 - **Web 改进**:进一步增强了对 RESTful Web 服务的支持。 - **WebSocket STOMP 消息改进**:提供了更高级的 WebSocket 支持。 - **测试改进**:增强...
### Spring的BeanFactory的接口注解 #### 一、引言 在Spring框架中,`BeanFactory`是工厂模式的一种实现,它负责管理容器中的Bean的生命周期与依赖注入。了解`BeanFactory`及其相关接口的功能对于掌握Spring的核心...
在实际项目中,Spring Boot与MyBatis的结合广泛应用于Web服务、后台API开发等场景。例如,可以通过编写Mapper接口和XML文件,轻松实现用户注册、登录、商品管理等功能。 总之,Spring Boot 2.1.3版本与MyBatis的...
- **域类 Web 绑定**:用于 Spring MVC 的 Web 请求绑定到实体类上。 - **Web 分页**:支持基于 HTTP 请求的分页功能。 - **Repository 填充器**:用于填充初始数据或进行其他初始化操作。 #### 四、JPA ...