发表于: 2018-03-02 20:49:31
1 694
今天完成的事情:
将缓存加入到项目中,并测试‘。
首先是关于服务层操作缓存的代码:
Count count = new Count();
Count count1 = (Count) xMemcachedUtil.getCache("count");
if (count1 != null) {
System.out.println("count1+" + count1.getId() + count1.getSalt() + "来自缓存\n");
}
count = countMapper.selectById(10);
System.out.println("count+" + count.getId() + count.getSalt() + "来自数据库\n");
xMemcachedUtil.addCache("as", 60 * 60, count);
Count count2 = (Count) xMemcachedUtil.getCache("as");
if (count2 != null) {
System.out.println("count2+" + count2.getId() + count2.getSalt() + "来自缓存\n");
}
xMemcachedUtil.deleteCache("as");
Count count3 = (Count) xMemcachedUtil.getCache("as");
if (count3 == null) {
System.out.println("缓存已经删除\n");
}
return countMapper.selectById(id);
测试结果如下:
.png)

可以看到,count1在缓存中并不存在,但是as这个key是存在的。但是不知道什么原因,系统输出的是地址而不是具体的值。
于是改变思路:
操作缓存的代码:
String name="疯子";
try {
Count count=countMapper.selectByName(name);
xMemcachedUtil.addCache(name,3600,count);
Count count1=(Count) xMemcachedUtil.getCache(name);
String user=count1.getUser();
String pass=count1.getPass();
String Md5=count1.getMd5();
String Ids=count1.getId().toString();
String Workers=count1.getWorkers();
String salt=count1.getSalt();
String AS=count1.getOnline();
System.out.println(user+"\n"+pass+"\n"+pass+"\n"+Md5+"\n"+Ids+"\n"+Workers+"\n"+salt+"\n"+AS);
} catch (Exception e) {
e.printStackTrace();
}
控制台输出:
.png)

仔细看过之后才发现,其实上面打出来的也是实际的内容,但是因为输出的是ID和盐,都是数字,然后盐又是十六进制,所以组合起来看就感觉是地址信息。
那么,既然加入缓存这么轻松,也就可以重构代码,将控制数据的内容全部放在服务层去处理,也就是控制层只负责将数据传递给页面,然后执行页面跳转而不涉及数据的逻辑处理。
那么服务层的编写,就不会向以前那样直接复制DAO类的方法,而是切实的开始实现自己的功能。
换句话就是:
在三层架构涉及与设计原则——分离关注、低耦合、高内聚——中:
控制层负责将服务层传递的数据传输给前端进行渲染展示,
服务层负责将从数据层读取的数据库数据进行逻辑处理,并将处理结果传递给控制层。
数据层,也就是DAO层只负责关于数据库数据的读取并交接给服务层。
我们先了解下Spring的消息转换机制。
在SpringMVC中,可以使用@RequestBody和@ResponseBody两个注解,分别完成请求报文到对象和对象到响应报文的转换,底层这种灵活的消息转换机制,就是Spring3.x中新引入的HttpMessageConverter即消息转换器机制。
明天计划的事情:重新搭建项目,对任务五的项目进行重构,重构完代码就开始了解关于@RequestBody和@ResponseBody两个注解。
遇到的问题:
1.将缓存管理类加入项目之后,提示No qualifying bean of typefound for depend,也就是没有扫描到bean。
排查之后发现,是因为没有对XMemcachedUtil进行扫描,也就没办法创建bean。设置扫描以后,成功。
收获:
1.对三层架构的运用有了更深层次的理解。
2.感觉自己在前期学的知识还是够,有时候比较吃力。
进度:搭建完缓存机制,感觉往前迈了一大步。
评论