发表于: 2016-06-28 21:30:45
0 1848
【操作步骤】
一、springmvc集成memcache
1、配置pom.xml文件,加入jar包:Memcached-Java-Client
2、新建init.properties,配置memcache的连接属性
memcached.server=123.206.6.60:11211
memcached.failOver=true
memcached.initConn=5
memcached.minConn=10
memcached.maxConn=250
memcached.maintSleep=3000
memcached.nagle=false
memcached.socketTO=3000
memcached.aliveCheck=false
3、新建memcached-content.xml文件,配置pool和memcache客户端
4、新建测试类TestMemcache,测试成功
参考链接:http://blog.csdn.net/truong/article/details/17362371
二、整合SpringMVC-Mybatis-Memcached,并测试登录页面
1、在上面配置的基础上,在applicationContext.xml中添加:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:properties/db.properties</value>
<value>classpath*:properties/init.properties</value>
</list>
</property>
</bean>
<import resource="classpath:memcached-content.xml"/>
2、新建工具类MemcachedUtils.java
3、在 UserService中添加方法findByPhoneNumber2做测试用
4、在UserServiceImpl中实现findByPhoneNumber2方法,如下:
public User findByPhoneNumber2(User user)
{
User user2;
// 判断缓存中数据是否存在,如果不存在则添加,存在则读取
if (MemcachedUtils.get("user")!= null)
{
user2 = (User) MemcachedUtils.get("user");
System.out.println("本次操作是在缓存中查询数据...");
}
else
{
user2 = mapper.findByPhoneNumber(user);
MemcachedUtils.add("user", user2);
System.out.println("本次操作是在数据库中查询数据...");
}
return user2;
}
5、修改LoginContoller,将登录时调用方法改为findByPhoneNumber2
6、登录测试:成功,第一次从数据库读取数据,第二次从缓存读取数据。
参考链接:http://blog.csdn.net/qq_27456225/article/details/50749010
【错误记录】
1、昨天的问题终于解决了,原来是init.properties属性中memcached.server=123.206.6.60:11211后面多了一个空格,所以始终没连上服务器,太大意了。
2、applicationContext.xml中引入<import resource="classpath:memcached-content.xml"/> 配置后,启动时会报错:
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'memcachedPool' defined in class path resource [memcached-content.xml]: Could not resolve placeholder 'memcached.server'
解决方法:连接属性写在一起就可以了,如果分开写的话就要在各个propertyConfigure加上“order”和“ignoreUnresolvablePlaceholders”
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath*:properties/db.properties</value>
<value>classpath*:properties/init.properties</value>
</list>
</property>
</bean>
评论