SSM与memcached整合
2016-10-26 16:38
113 查看
前文分别整理转载了通过maven搭建SSM项目与Spring与memcached整合现在将我近期的代码都放到下面这篇博客中,其中和SSM整合处不同我用的是oracle数据库其他的没有什么区别,如有问题就不断地调试调试再调试吧。结尾会有代码的下载地址。
既然是maven构建的项目就先把pox.xml先丢出来部分引用有注释
spring-mybatis.xml配置文件添加激活自动代理功能
将memcached放到程序的service层主要是在查询数据库前进行判断看缓存中是否存在该条信息,如果存在则通过缓存读取,否则查询数据库。可以通过spring aop的环绕通知下面是memcached的环绕通知
jdbc.properties数据库连接配置
log4j.properties日志配置文件
memcached.properties缓存服务的配置
其中的ip,端口等信息根据实际情况填写
spring-memcached.xml spring与memcached整合xml配置
spring-mvc.xml springmvc配置文件
spring-mybatis.xml 数据库配置spring与mybatis配置文件
最后通过web.xml将所有xml文件整合xml文件如下
http://download.csdn.net/detail/haozhongjun/9664738
既然是maven构建的项目就先把pox.xml先丢出来部分引用有注释
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cnm</groupId> <artifactId>SSMTest</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>SSMTest Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <!-- spring版本号 --> <spring.version>4.0.2.RELEASE</spring.version> <!-- mybatis版本号 --> <mybatis.version>3.2.6</mybatis.version> <!-- log4j日志文件管理包版本 --> <slf4j.version>1.7.7</slf4j.version> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!-- spring核心包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <!-- 用来object与xml之间相互转换 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-oxm</artifactId> <version>${spring.version}</version> </dependency> <!-- 事务包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <!-- jdbc包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <!-- spring mvc 包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- 切面包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjrt --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.6.11</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.6.11</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>2.1</version> </dependency> <!-- 应用上下文工具 including EhCache, JavaMail, Quartz, and Freemarker integration --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <!-- 支持测试 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <!-- mybatis核心包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <!-- mybatis/spring包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> <!-- 导入java ee jar 包 --> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency> <!-- oracle连接数据库jar包 --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>11.2.0</version> </dependency> <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> <!-- JSTL标签类 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- 日志文件管理包 --> <!-- log start --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <!-- 格式化对象,方便输出日志处理json --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> <!-- 记录日志 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <!-- log end --> <!-- 映入JSON --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <!-- 上传组件包 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <!-- 加密算法 --> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> <!-- memcached引用包 --> <!-- https://mvnrepository.com/artifact/com.googlecode.xmemcached/xmemcached --> <dependency> <groupId>com.googlecode.xmemcached</groupId> <artifactId>xmemcached</artifactId> <version>1.4.3</version> </dependency> </dependencies> <build> <finalName>SSMTest</finalName> </build> </project>
spring-mybatis.xml配置文件添加激活自动代理功能
<!-- 激活自动代理功能 --> <aop:aspectj-autoproxy proxy-target-class="true"/>
将memcached放到程序的service层主要是在查询数据库前进行判断看缓存中是否存在该条信息,如果存在则通过缓存读取,否则查询数据库。可以通过spring aop的环绕通知下面是memcached的环绕通知
package com.test.util; import java.util.concurrent.TimeoutException; import net.rubyeye.xmemcached.MemcachedClient; import net.rubyeye.xmemcached.exception.MemcachedException; import org.apache.log4j.Logger; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.test.domain.User; @Component @Aspect public class UserServiceInterceptor { public static final Logger log = Logger.getLogger(UserServiceInterceptor.class); //将缓存客户端工具类 MemcachedCache 织入进来 @Autowired private MemcachedClient memcachedClient; //* 定义pointcunt @Pointcut("execution(* com.test.service.imp.UserServiceImp.*(..))") public void aPointcut() { } /** * 环绕装备 用于拦截查询 如果缓存中有数据,直接从缓存中读取;否则从数据库读取并将结果放入缓存 * * @param call * @param name * @return */ @Around("aPointcut()&&args(id)") public User doFindUserByNameAround(ProceedingJoinPoint call, long id) { User user = null; try { if (memcachedClient.get("findUserByName_" + id)!=null) { user = (User) memcachedClient.get("findUserByName_" + id); log.debug("从缓存中读取!findUserByName_" + id); System.out.println("从缓存中读取!"); } else { try { user = (User)call.proceed(); if (user != null) { memcachedClient.set("findUserByName_" + id,0, user); log.debug("缓存装备被执行:findUserByName_" + id); System.out.println("缓存装备被执行!"); } } catch (Throwable e) { e.printStackTrace(); } } } catch (TimeoutException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MemcachedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return user; } }上文中@Around("aPointcut()&&args(id)")中的aPointcut()指代切点,args(id)指代切点方法的传参具体代码可以下载项目后自行查看完整项目结构如下图:
jdbc.properties数据库连接配置
log4j.properties日志配置文件
memcached.properties缓存服务的配置
其中的ip,端口等信息根据实际情况填写
spring-memcached.xml spring与memcached整合xml配置
spring-mvc.xml springmvc配置文件
spring-mybatis.xml 数据库配置spring与mybatis配置文件
最后通过web.xml将所有xml文件整合xml文件如下
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Archetype Created Web Application</display-name> <!-- Spring和mybatis的配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mybatis.xml,classpath:spring-memcached.xml</param-value> </context-param> <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Spring监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止Spring内存溢出监听器 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- 此处可以可以配置成*.do,对应struts的后缀习惯 --> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> </web-app>以上就是所有整合的重要代码,其中ssm与memcached配置请参见以前的博客,也可以下载整个项目来对照查看项目下载路径:
http://download.csdn.net/detail/haozhongjun/9664738
相关文章推荐
- 三、Memcached整合Spring cache注解完整示例(SSM框架)
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- SSM框架——详细整合教程(Spring 4.0.2+SpringMVC 4.0.2+MyBatis3.2.6)
- Maven整合SSM(Maven+springmvc+spring+mybatis)
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- SSM框架整合quartz定时器
- Maven+SSM+Shiro整合配置
- ssm整合
- 5、SSM整合方式二--图文并茂详细版
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- 我的笔记 SSM直接写Mapper接口的bean整合
- idea环境基于maven整合ssm
- SSM整合(1): spring 与 springmvc 整合
- SSM整合的关键配置文件整理
- SSM——Maven整合
- 详细整合SSM以及整理所需要的jar包
- Spring + SpringMVC + Mybatis整合SSM框架配置方法
- SSM框架整合(使用步骤)
- 基于注解spring4.*,mybatis3.*最简单的SSM整合
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)