SpringMVC+redis整合

SpringMVC+redis整合_第1张图片SpringMVC+redis整合_第2张图片


在网络上有一个很多人转载的springmvc+redis整合的案例,不过一直不完整,也是被各种人装来转去,现在基本将该框架搭建起来。

package com.pudp.bae.base;

 

import java.io.Serializable;

 

public abstract class BaseModel implements Serializable{

 

}
package com.pudp.bae.base;

 

import java.util.Map;

 

import org.springframework.web.servlet.ModelAndView;

 

public class BaseMultiController {

    protected ModelAndView toView(final String url,final Map map)

    {   

        ModelAndView  view = new ModelAndView(url);

        return view;

    }

}


package com.pudp.bae.base;

 

import java.io.Serializable;

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.data.redis.core.RedisTemplate;

import org.springframework.data.redis.serializer.RedisSerializer;

 

public abstract class RedisGeneratorDao  {

   

  @Autowired

  protected RedisTemplate redisTemplate ;

 

  /** 

   * 设置redisTemplate 

   * @param redisTemplate the redisTemplate to set 

   */ 

  public void setRedisTemplate(RedisTemplate redisTemplate) {  

    this.redisTemplate = redisTemplate;  

  }  

     

  /** 

   * 获取 RedisSerializer 

   * 
------------------------------
*/ protected RedisSerializer getRedisSerializer() { return redisTemplate.getStringSerializer(); } }

package com.pudp.bae.controller;

 

import java.util.HashMap;

import java.util.Map;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.ModelAttribute;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.servlet.ModelAndView;

 

import com.pudp.bae.base.BaseMultiController;

import com.pudp.bae.model.Member;

import com.pudp.bae.service.MemberService;

 

@Controller

@RequestMapping(value = "/member")

public class MemberController extends BaseMultiController {

 

    @Autowired

    private MemberService memberService;

 

    public void setMemberService(MemberService memberService) {

        this.memberService = memberService;

    }

 

    @RequestMapping(value = { "/add", "/add.html" }, method = { RequestMethod.GET })

    public ModelAndView add(HttpServletRequest request,

            HttpServletResponse response) {

        Map map = new HashMap();

        Member member = new Member();

        member.setId("1");

        member.setNickname("guoxiaoming");

        this.memberService.add(member);

         

        return toView("add", map);

    }

 

    @RequestMapping(value = { "/add", "/add.html" }, method = { RequestMethod.POST })

    public ModelAndView addMember(HttpServletRequest request,

            HttpServletResponse response,

            @ModelAttribute("member") Member member) {

        Map map = new HashMap();

        System.out.println(member);

        map.put("message", "成功添加数据到库," + member);

        this.memberService.add(member);

        return toView("message", map);

    }

 

    @RequestMapping(value = { "/{id:\\d+}/query", "/{id:\\d+}/query.html" }, method = {

            RequestMethod.GET, RequestMethod.POST })

    public ModelAndView queryMember(HttpServletRequest request,

            HttpServletResponse response, @PathVariable("id") String id) {

        Map map = new HashMap();

        System.out.println(id);

        Member member = this.memberService.get(id);

        if (null != member) {

            map.put("message", "查询Id=" + id + "的用户名为:" + member.getNickname());

        } else {

            map.put("message", "没有查询到与Id=" + id + "相关的数据");

        }

        return toView("message", map);

    }

 

    @RequestMapping(value = { "/{id:\\d+}/delete", "/{id:\\d+}/delete.html" }, method = {

            RequestMethod.GET, RequestMethod.POST })

    public ModelAndView deleteMember(HttpServletRequest request,

            HttpServletResponse response, @PathVariable("id") String id) {

        Map map = new HashMap();

        try {

            this.memberService.delete(id);

            map.put("message", "删除Id为" + id + "的用户成功.");

        } catch (Exception e) {

            e.printStackTrace();

            map.put("message", "删除Id为" + id + "的用户失败, " + e.getMessage());

        }

        return toView("message", map);

    }

 

}


package com.pudp.bae.dao.redis;

 

import java.util.List;

 

import com.pudp.bae.model.Member;

 

public interface MemberDao {

    boolean add(Member member);

 

    abstract boolean add(List list);

 

    void delete(String key);

 

    Member get(String keyId);

     

}

package com.pudp.bae.dao.redis;

 

import java.util.ArrayList;

import java.util.List;

 

import org.springframework.dao.DataAccessException;

import org.springframework.data.redis.connection.RedisConnection;

import org.springframework.data.redis.core.RedisCallback;

import org.springframework.data.redis.serializer.RedisSerializer;

import org.springframework.stereotype.Repository;

import org.springframework.util.Assert;

 

import com.pudp.bae.base.RedisGeneratorDao;

import com.pudp.bae.model.Member;

 

 

@Repository(value="memberDao")

public class MemberDaoImpl extends RedisGeneratorDao implements MemberDao{

   

  /**

   * 添加对象

   */

  @Override

  public boolean add(final Member member) {  

    boolean result = redisTemplate.execute(new RedisCallback() {  

      public Boolean doInRedis(RedisConnection connection)  

          throws DataAccessException {  

        RedisSerializer serializer = getRedisSerializer();  

        byte[] key  = serializer.serialize(member.getId());  

        byte[] name = serializer.serialize(member.getNickname());  

        return connection.setNX(key, name);  

      }  

    });  

    return result;  

  }  

 

  /**

   * 添加集合

   */

  @Override

  public boolean add(final List list) {

    Assert.notEmpty(list);  

    boolean result = redisTemplate.execute(new RedisCallback() {  

      public Boolean doInRedis(RedisConnection connection)  

          throws DataAccessException {  

        RedisSerializer serializer = getRedisSerializer();  

        for (Member member : list) {  

          byte[] key  = serializer.serialize(member.getId());  

          byte[] name = serializer.serialize(member.getNickname());  

          connection.setNX(key, name);  

        }  

        return true;  

      }  

    }, false, true);  

    return result; 

  }  

   

  /**

   * 删除对象 ,依赖key

   */

  @Override

  public void delete(String key) {  

    List list = new ArrayList();  

    list.add(key);  

    delete(list);  

  }  

   

  /**

   * 删除集合 ,依赖key集合

   */

  public void delete(List keys) {  

    redisTemplate.delete(keys);  

  }  

   

  /**

   * 修改对象 

   */

  public boolean update(final Member member) {  

    String key = member.getId();  

    if (get(key) == null) {  

      throw new NullPointerException("数据行不存在, key = " + key);  

    }  

    boolean result = redisTemplate.execute(new RedisCallback() {  

      public Boolean doInRedis(RedisConnection connection)  

          throws DataAccessException {  

        RedisSerializer serializer = getRedisSerializer();  

        byte[] key  = serializer.serialize(member.getId());  

        byte[] name = serializer.serialize(member.getNickname());  

        connection.set(key, name);  

        return true;  

      }  

    });  

    return result;  

  }  

   

  /**

   * 根据key获取对象

   */

  @Override

  public Member get(final String keyId) {  

    Member result = redisTemplate.execute(new RedisCallback() {  

      public Member doInRedis(RedisConnection connection)  

          throws DataAccessException {  

        RedisSerializer serializer = getRedisSerializer();  

        byte[] key = serializer.serialize(keyId);  

        byte[] value = connection.get(key);  

        if (value == null) {  

          return null;  

        }  

        String nickname = serializer.deserialize(value);  

        return new Member(keyId, nickname);  

      }  

    });  

    return result;  

  }  

 

}

package com.pudp.bae.model;

 

import com.pudp.bae.base.BaseModel;

 

public class Member extends BaseModel{

  

  private static final long serialVersionUID = -1959528436584592183L;

  private String id;

  private String nickname;

   

  public Member(){}

   

  public Member(String id, String nickname){

    this.setId(id);

    this.setNickname(nickname);

  }

   

  public String getId() {

    return id;

  }

   

  public void setId(String id) {

    this.id = id;

  }

   

  public String getNickname() {

    return nickname;

  }

   

  public void setNickname(String nickname) {

    this.nickname = nickname;

  }

   

}

package com.pudp.bae.service;

 

import javax.annotation.Resource;

 

import com.pudp.bae.dao.redis.MemberDao;

import com.pudp.bae.model.Member;

 

public class MemberService {

      

     @Resource(name="memberDao")

     private MemberDao memberDao;

      

     public void setMemberDao(MemberDao memberDao)

     {

        this.memberDao = memberDao;

     }

       

     public void add(Member member){

         memberDao.add(member);

     }

      

     public void delete(String id){

         memberDao.delete(id);

     }

      

     public Member get(String id)

     {

         return memberDao.get(id);

     }

}

redis-context.xml



   

   

  

   

    

      

      

      

      

    

     

    

     

    

      

     

    

  


applicationContext.xml





     

     

    

    

 

     

    

    

  

    

     

     

    

    

 



spring-mvc.xml





          

  







    

    

    



 


redis.properties

# Redis settings

#redis.host=192.168.20.101

#redis.port=6380

#redis.pass=foobared

redis.host=127.0.0.1

redis.port=6379

redis.pass=xx

redis.maxIdle=300

redis.maxActive=600

redis.maxWait=1000

redis.testOnBorrow=true

web.xml





    SpringMVCRedis

    

        org.springframework.web.context.ContextLoaderListener

        

    

 

    

        contextConfigLocation

        /WEB-INF/context/spring-context.xml

    

 

    

        SpringEncodingFilter

        org.springframework.web.filter.CharacterEncodingFilter

        

 

        

            encoding

            UTF-8

        

 

        

            forceEncoding

            true

        

    

 

    

        SpringEncodingFilter

        /*

    

 

    

        mvc

        org.springframework.web.servlet.DispatcherServlet

        

        

            contextConfigLocation

            /WEB-INF/context/spring-mvc.xml

        

        2

    

 

    

        mvc

        /

    

 

    

        index.jsp

    



原文地址: 点击查看原文

你可能感兴趣的:(SpringMVC+redis整合)