前言

  接上篇,已经完成了一个SpringBoot项目的基本搭建。那么现在就要考虑要做什么,怎么做的问题。所以本篇内容不多,带大家一起来简单了解一下要做的东西,之前有很多人不知道从哪里下手,那么今天我带着大家熟悉LayIM以及它的对接思路。由于重点是SpringBoot,所以,LayIM部分也不会讲的太细,官网有详细的文章。

LayIM有什么?

  • 非常舒服的UI
  • 封装了友好的聊天界面,消息记录,自定义插件,添加好友,添加群组等等功能,前端的东西完全不必费心,把重心放到实现业务上。
  • 完善的文档,开发起来不必大费力气

文档解析

  上边一堆套话,没有什么实质内容,下面我简单讲一下我们的开发思路。首先看初始化界面,浏览器右下角有一个类似QQ似的界面,包含好友列表,群组列表,当前登录人的信息等。

  

  OK,查看源代码我们可以看到,LayIM是有多个基础接口的。初始化接口,上传文件接口等等。这些数据接口是与我们将要用SpringBoot开发息息相关的。可以看到代码里面有一个路径:/layim/json/getList.json.下载代码包,我们看看这个文件是什么东东。

 //基础配置
  layim.config({//初始化接口
    init: {url: '/layim/json/getList.json',data: {}}//查看群员接口
    ,members: {url: '/layim/json/getMembers.json',data: {}},uploadImage: {url: '' //(返回的数据格式见下文),type: '' //默认post
    },uploadFile: {url: '' //(返回的数据格式见下文),type: '' //默认post}

  json的内容如下图所示。(已经折叠)

  

  序号1:最外层的统一json格式。code:0 (success)1(failed)。msg:接口返回信息 data :接口返回数据

  序号2:mine即当前登录人的信息,头像,状态,签名等

  序号3:好友分组信息。包含多个好友分组,每个人组有若干好友

  序号4:群组信息。包含多个群组,每个群组有图标,群名等

  好,那么到此为止,其他的先不介绍,我们直接来实现这个初始化数据的加载,不过这里不得不说SpringBoot真的是很赞,一个RestController帮你搞定。

代码实战

  先根据数据格式建好相应的model。当然java里叫pojo。由于他们对应的是最终输出的json,所以我没有把他们的类和对应数据库的类(@Entity)写在一起。代码在/domain/viewmodels 文件夹下。在这里我将最终符合上图中的json格式的代码贴出来

public class LayimBaseViewModel {private UserViewModel mine;private List<FriendGroupViewModel> friend;private List<BigGroupViewModel> group;//省略 getter setter
}

  数据结构已经出来了,相信大家迫不及待的看到页面效果了,不要着急,先建一个Controller。加上@RestController 注解。官方说明如下:

  1. A convenience annotation that is itself annotated with @Controller and @ResponseBody. Types that carry this annotation are treated as controllers where @RequestMapping methods assume @ResponseBody semantics by default.  (@RestController 相当于@Controller 和 @ReponseBody 的结合)

  不管那么多,总之,我觉得SpringBoot的注解还是蛮强大的。我们随便写一个方法试试。

@RestController
@RequestMapping("/layim")
public class UserController {@GetMapping("/test")public JsonResult testData(){return ResultUtil.success("hello spring boot");}
}

  运行一下:

  

  是不是很简单,那还等什么,还不赶紧把LayIM的数据搭建出来。新建 UserService,增加 getBaseList 方法,这里我们先不从数据库请求,直接模拟数据。

 1     public JsonResult getBaseList(Long userId){
 2         LayimBaseViewModel baseData = new LayimBaseViewModel();
 3
 4         //自己的信息
 5         UserViewModel mine = new UserViewModel();
 6         mine.setUsername("小盘子");
 7         mine.setSign("SpringBoot学习中");
 8         mine.setAvatar("https://vignette.wikia.nocookie.net/dragonball/images/d/da/Kid-Goku-psd61058.png/revision/latest?cb=20120213205410");
 9         mine.setId(userId);
10
11         baseData.setMine(mine);
12         //好友列表信息
13         ArrayList<FriendGroupViewModel> friends = new ArrayList<FriendGroupViewModel>();
14
15         FriendGroupViewModel frined1 = new FriendGroupViewModel();
16         frined1.setId(1L);
17         frined1.setGroupname("我的好友");
18         frined1.setOnline(10);
19
20         ArrayList<UserViewModel> users1 = new ArrayList<UserViewModel>();
21
22         UserViewModel user1 = new UserViewModel();
23         user1.setId(100001L);
24         user1.setAvatar("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQjvcDBSg8-TYMzRSbw75MJAawM5dF9StHSisVhdhWmL6vK8K66UQ");
25         user1.setSign("教练,我想打篮球");
26         user1.setUsername("三井寿");
27
28         users1.add(user1);
29
30         frined1.setList(users1);
31         friends.add(frined1);
32
33         baseData.setFriend(friends);
34         //分组信息
35         ArrayList<BigGroupViewModel> groups  = new ArrayList<BigGroupViewModel>();
36
37         BigGroupViewModel bigGroup1 = new BigGroupViewModel();
38         bigGroup1.setId(1000001L);
39         bigGroup1.setGroupname("SpringBoot爱好者群");
40         bigGroup1.setAvatar("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTp9Q8BuXHj30KbOHPY7qlnR10oI4cCpplRcBFThQFzZ4bx3mBz");
41         groups.add(bigGroup1);
42
43         baseData.setGroup(groups);
44         return ResultUtil.success(baseData);
45     }

View Code

  那么在UserController中使用 UserService 的 getBaseList 方法即可。

 @GetMapping(value = "/base/{uid}")public JsonResult getBaseData(@PathVariable("uid") Long userId){return userService.getBaseList(userId);}

  注意,我们这里分别使用了 @RestController,@Autowired,@GetMapping,@PathVariable注解,由于我对注解也没有那么了解,所以想具体学习的朋友可以看相关文档。因为我们是快速使用,所以是属于遇到什么学什么,用什么的思路,也不会在某个知识点上停留太久,有问题小伙伴们可以留言一起探讨。

  方法写完了,在浏览器中看看(/layim/base/{uid}):

  

  对比一下getList.json文件,是不是没有什么区别。赶紧把getList.json替换了吧。打开index.html,找到 init:url。把我们自己的url替换上去

  init: {      url: '/layim/base/10000'//10000为用户ID,后台也可以不用路径 使用?uid=10000的形式也可以      ,data: {}//附加其他参数  }  我们在次打开index.html,浏览:  

  没有任何问题,大功告成?还早着呢,真正的数据是从数据库(或其他存储)读出来的,正如上一篇介绍,我将会使用MySQL作为数据存储,并且使用SpringBoot JPA 做数据操作。

总结

  本片教大家如何分析一个带有完整文档的前端框架,并开发对应后台API。虽然只是简单介绍了 init 接口,但是 像getMemberList 接口,或者上传图片啊,文件啊,我相信大家肯定都能举一反三来实现。当然@RestController功不可没。现在想想以后还有很多的工作要做,别着急。后边要学的东西多着呢。websocket,缓存,队列等等都加上(问:用得着这么多东西吗? 答“我只是想通过项目来练习他们的使用)

  下篇预告:从零一起学Spring Boot之LayIM项目长成记(三) 数据库的简单设计和JPA的简单使用。

转载于:https://www.cnblogs.com/panzi/p/7775287.html

从零一起学Spring Boot之LayIM项目长成记(二) LayIM初体验相关推荐

  1. (10)Spring Boot修改端口号【从零开始学Spring Boot】

    Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicatoin.properties文件,在配置文件中加入: server.port=9090 常用配置: #### ...

  2. 70.打印所有Spring boot载入的bean【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 问题的提出: 我们在开发过程当中,我们可能会碰到这样的问题:No qualifying bean  就是我们定义的bean无法进行注入,那到底是什 ...

  3. (30)导入时如何定制spring-boot依赖项的版本【转载】【从零开始学Spring Boot】...

    此文章转载地址:http://www.tuicool.com/articles/RJJvMj3 请注重作者的版权. spring-boot通过maven的依赖管理为我们写好了很多依赖项及其版本,我们可 ...

  4. 54. spring boot日志升级篇—logback【从零开始学Spring Boot】

    在<44. Spring Boot日志记录SLF4J>章节中有关相关的介绍,这里我们在深入的了解下logback框架. 为什么要使用logback ? --在开发中不建议使用System. ...

  5. (38)Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot】

    [本文章是否对你有用以及是否有好的建议,请留言] 在使用spring boot做负载均衡的时候,多个app之间的session要保持一致,这样负载到不同的app时候,在一个app登录之后,而访问到另外 ...

  6. (13)处理静态资源(自定义资源映射)【从零开始学Spring Boot】

    上面我们介绍了Spring Boot 的默认资源映射,一般够用了,那我们如何自定义目录?  这些资源都是打包在jar包中的,然后实际应用中,我们还有很多资源是在管理系统中动态维护的,并不可能在程序包中 ...

  7. (28)SpringBoot启动时的Banner设置【从零开始学Spring Boot】

    对于使用过Spring Boot的开发者来说,程序启动的时候输出的由字符组成的Spring符号并不陌生.这个是Spring Boot为自己设计的Banner: 1.    .   ____       ...

  8. 64.JPA命名策略【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 在(39.2). Spring Boot Shiro权限管理[从零开始学Spring Boot] 这一章节中有人碰到这样一个问题"导入的 ...

  9. 17、Spring Boot普通类调用bean【从零开始学Spring Boot】

    转载:http://blog.csdn.net/linxingliang/article/details/52013017 我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个 ...

  10. (39.3) Spring Boot Shiro权限管理【从零开始学Spring Boot】

    在学习此小节之前您可能还需要学习: (39.1) Spring Boot Shiro权限管理[从零开始学Spring Boot] http://412887952-qq-com.iteye.com/b ...

最新文章

  1. flask 核心 之 应用上下文 及 请求上下文
  2. 一文快速入门分库分表中间件 Sharding-JDBC
  3. redis数据库入门
  4. IOS微信6.7.4输入框失去焦点,软键盘关闭后,被撑起的页面无法回退到原来正常的位置...
  5. elasticsearch配置文件解析
  6. VMware虚拟机VMware Authorization Service不能启动问题
  7. java删除mysql 数据库语句怎么写_怎么用JAVA语句在Mysql中查询,添加,删除语句,说的详细点,谢谢!...
  8. ubuntu无法设置亮度,触摸板失效,声音无法调节
  9. 0基础学python做什么工作好-零基础自学Python多久可以找工作?
  10. 10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value
  11. 神经网络在游戏中的应用,神经网络控制应用实例
  12. 移动通信原理、技术与系统——概述
  13. 苹果iPhone 6Plus 拆机过程,拆机图完全拆机流程及注意事项
  14. python通过pyserial读写串口
  15. GIS等级考试知识集锦
  16. 蓝桥杯试题——随意组合
  17. win7定时关机命令_只需9步教你轻松设置win7系统定时关机,无需任何工具
  18. 互联网让我的人生逆袭
  19. Excel删除重复行单不删除单元格
  20. 广东电大计算机绘图试题,电大CAD计算机绘图本实验1小抄参考

热门文章

  1. 计算机课件制作ppt,计算机应用基础_幻灯片制作ppt课件
  2. element-ui图标显示不出来问题
  3. 销售书籍推荐:做销售你究竟该看什么书?
  4. JL 杰理 AC692N系列TWS 蓝牙音箱 开发
  5. 【51 Nod1378】夹克老爷的愤怒
  6. 哮喘病人小气道上皮细胞 (Asthma) Small airway epithelial cells 培养解决方案
  7. android极光推送sequence,极光推送接入
  8. Boob炸弹拆除IDA版
  9. 玩转字符串篇--代码自动生成,解放双手,android音视频开发
  10. 如果有人问你 SQL 注入的资料,请叫他看这份速查表