搜档网
当前位置:搜档网 › springMVC-Mybatis-memcached整合流程

springMVC-Mybatis-memcached整合流程

springMVc+Ibatis+Mecached简单配置文档

作者:赵洋编写时间:2013年12月20日

文档信息:本文档基于spring4.0.0M2,mybatis3.1.1编写的简单的框架整合流程,针对于需要整个两个框架的朋友而编写,并且内容都由demo中拷贝而出,能够完整正确的运行。

框架信息:

框架名称:spring-framework

版本:spring4.0.0M2

框架名称:MyBatis

版本:3.1.1

memcached-win32-1.4.4-14

所需jar包:

//请保证jar包版本的对应性,否则可能出现不可预知错误

aspectjrt.jar commons-logging.jar java_memcached-release_2.6.6.jar

javax-inject.jar jcl-over-slf4j-1.6.4.jar jsp-api.jar jstl.jar junit4.4.jar

log4j-1.2.14.jar logback-access-1.0.13.jar logback-classic-1.0.13.jar

logback-core-1.0.13.jar mybatis-3.1.1.jar mybatis-spring-1.1.0.jar

mysql-connector-java-5.1.23-bin.jar org.springframework.transaction-3.0.0.RELEASE.jar servlet-api.jar slf4j-api-1.6.4.jar slf4j-log4j12-1.6.4.jar spring-aop-4.0.0.M2.jar

spring-beans-4.0.0.M2.jar spring-context-4.0.0.M2.jar

spring-context-support-4.0.0.M2.jar spring-core-4.0.0.M2.jar

spring-expression-4.0.0.M2.jar spring-jdbc-4.0.0.M2.jar spring-web-4.0.0.M2.jar spring-webmvc-4.0.0.M2.jar spy-2.4.jar spymemcached-2.8.1.jar

MyBatis配置

创建mybatis配置文件(mybatis-config.xml)

PUBLIC"-//https://www.sodocs.net/doc/2b6056716.html,//DTD Config 3.0//EN"

"https://www.sodocs.net/doc/2b6056716.html,/dtd/ibatis-3-config.dtd">

创建数据库(demo)

创建数据表(user)

创建完毕后请填充测试数据

创建实体类(User)

package test.bean;

import java.io.Serializable;

//继承Serializable表示此类可序列化publicclass User implements Serializable{ privateint id;

private String name;

private String gender;

//缓存序列化时需要用到的属性

privatestaticfinallong serialVersionUID = 1L;

publicint getId() {

return id;

}

publicvoid setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

publicvoid setName(String name) {

https://www.sodocs.net/doc/2b6056716.html, = name;

}

public StringgetGender() {

return gender;

}

publicvoid setGender(String gender) {

this.gender = gender;

}

}

创建dao层接口(IUserDao.java)

package test.dao;

import https://www.sodocs.net/doc/2b6056716.html,er;

publicinterface IUserDao {

User getUser(String name);

}

创建dao层接口所对应的配置文件(IUserDao.xml)

请与接口类使用相同的名字

PUBLIC"-//https://www.sodocs.net/doc/2b6056716.html,//DTD Mapper 3.0//EN"

"https://www.sodocs.net/doc/2b6056716.html,/dtd/ibatis-3-mapper.dtd">

在spring配置文件中配置数据源(完整配置见spring部分)

class="org.springframework.jdbc.datasource.DriverManagerDataSource">

${jdbc.driverClassName}

${jdbc.url}

配置数据库连接参数文件(jdbc.properties)

jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc\:mysql\://localhost\:3306/demo?user\=test&password\=test Memcached配置

Memcached安装

一、下载memcached的稳定版本,然后解压到某个目录下面,我放到了

d:\app\memcached

下载链接

找到c:\WINDOWS\system32\cmd.exe,右键以管理员身份运行,否则会报错,切换到memcached目录下面,

安装

Cmd切换目录的代码为cd –d d:/memcached

Cmd代码

1.memcached.exe –d install

启动

Cmd代码

1.memcached.exe -d start

spring自动生成memcached对象

在spring配置文件中配置(完成内容见spring部分)

KETAMA_HASH

注入业务类中

完整内容见spring配置部分

注入后在业务类中直接调用即可(具体调用见spring部分)

Spring配置

web.xml中添加spring配置

contextConfigLocation

/WEB-INF/config/applicationContext.xml

org.springframework.web.context.ContextLoaderListener

web.xml中添加springMVC配置

springMVC

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

/WEB-INF/config/mvc-dispatcher-servlet.xml

1

springMVC

*.do

编写springMVC配置文档(mvc-dispatcher-servlet.xml)

xmlns:xsi="https://www.sodocs.net/doc/2b6056716.html,/2001/XMLSchema-instance"

xmlns:p="https://www.sodocs.net/doc/2b6056716.html,/schema/p"

xmlns:context="https://www.sodocs.net/doc/2b6056716.html,/schema/context"

xsi:schemaLocation="https://www.sodocs.net/doc/2b6056716.html,/schema/beans

https://www.sodocs.net/doc/2b6056716.html,/schema/beans/spring-beans-3.0.xsd

https://www.sodocs.net/doc/2b6056716.html,/schema/context

https://www.sodocs.net/doc/2b6056716.html,/schema/context/spring-context-3.0.xsd">

编写spring配置文档(applicationContext.xml)

xmlns:xsi="https://www.sodocs.net/doc/2b6056716.html,/2001/XMLSchema-instance"

xmlns:p="https://www.sodocs.net/doc/2b6056716.html,/schema/p"

xmlns:context="https://www.sodocs.net/doc/2b6056716.html,/schema/context"

xsi:schemaLocation="https://www.sodocs.net/doc/2b6056716.html,/schema/beans

https://www.sodocs.net/doc/2b6056716.html,/schema/beans/spring-beans-3.0.xsd https://www.sodocs.net/doc/2b6056716.html,/schema/context

https://www.sodocs.net/doc/2b6056716.html,/schema/context/spring-context-3.0.xsd">

class="org.springframework.jdbc.datasource.DriverManagerDataSource">

${jdbc.driverClassName}

${jdbc.url}

KETAMA_HASH

配置数据库连接参数文件(jdbc.properties)

jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc\:mysql\://localhost\:3306/demo?user\=test&password\=test 编写spring控制器调用的服务接口(IUserServer)packagetest.server;

https://www.sodocs.net/doc/2b6056716.html,er;

importtest.dao.IUserDao;

public interface IUserServer {

public User testMethod(String userName);

}

编写spring控制器调用的服务类(UserServerImpl)packagetest.server;

importnet.spy.memcached.MemcachedClient;

importorg.springframework.beans.factory.annotation.Autowired;

https://www.sodocs.net/doc/2b6056716.html,er;

importtest.dao.IUserDao;

public class UserServerImpl implements IUserServer{

privateIUserDaouserDao;

privateMemcachedClientmemcachedClient;

publicIUserDaogetUserDao() {

returnuserDao;

}

//依赖注入,根据属性名自动注入

@Autowired

public void setUserDao(IUserDaouserDao) {

https://www.sodocs.net/doc/2b6056716.html,erDao = userDao;

}

publicMemcachedClientgetMemcachedClient() {

returnmemcachedClient;

}

//依赖注入(分布式缓存,在spring中自动生成)

@Autowired

public void setMemcachedClient(MemcachedClientmemcachedClient) {

this.memcachedClient = memcachedClient;

}

public User testMethod(String userName){

User user;

//判断缓存中数据是否存在,如果不存在则添加,存在则读取

if(this.memcachedClient.get("user")!=null){

user=(User) this.memcachedClient.get("user");

}else{

user=userDao.getUser(userName);

this.memcachedClient.add("user", 7200, user);

}

return user;

}

}

编写spring访问的控制器(UserController)

注意:controller必须位置springMVC配置文件中组件扫描路径下packagetest.controller;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.stereotype.Controller;

importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.servlet.ModelAndView;

https://www.sodocs.net/doc/2b6056716.html,er;

https://www.sodocs.net/doc/2b6056716.html,erServer;

/**

* 登录控制器

* @author tanfei

* @date Feb 1, 2013 9:38:13 AM

*/

@Controller

public class UserController {

UserServer server;

publicUserServergetServer() {

return server;

}

//依赖注入,根据属性名自动注入

@Autowired

public void setServer(UserServer server) {

this.server = server;

}

//根据访问连接调用控制器,此控制器的调用连接为localhost:8080/demo/login.do

@RequestMapping("login")

publicModelAndViewhandleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception

{

//创建ModelAndView对象,login为返回的jsp页面的名称,全路径是根据在springMVC配置文件中配置的前缀与后缀拼接而成

ModelAndView mode= new ModelAndView("login");

User user=server.testMethod("aa");

//将对象加入mode返回到前台页面

mode.addObject("user", user);

return mode;

}

}

编写jsp页面显示后台控制器的返回值(login.jsp)

<%

String path = request.getContextPath();

String basePath =

request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort ()+path+"/";

%>

<%@page language="java"import="java.util.*"pageEncoding="gbk"%>

My JSP 'index.jsp' starting page

//该实体类有三个属性。ID,姓名(name),性别(gender)

${user.gender}

到此即可访问localhost:8080/demo/login.do,如果不出问题则会显示数据库中的gender属性,至此,最简单的配置流程即完成

运行结果

相关主题