1.创建ck-emos项目

1)创建SpringBoot项目;

2)添加Maven依赖:

SpringBoot DevTool 热部署插件;

Lombook 生成SET/GET方法;

SpringWeb SpringMVC框架;

Mysql Driver Mysql数据库驱动;

Mybatis Framework Mybatis 持久层框架;

Spring Data Redis 操作Redis技术;

Spring Data MongoDB 操作MongoDB技术;

Spring For RabbitMQ RabbitMQ;

Java Mail Sender 邮件发送技术;

Quartz Scheduler 定时技术

3) 项目配置:

server:#配置Tomcattomcat:uri-encoding: UTF-8threads:max: 200min-spare: 30connection-timeout: 5000msport: 8080servlet:context-path: /emos
spring:#配置Mysql数据源datasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://1.117.153.182:3305/ckkj_emos?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiusername: rootpassword: ****initial-size: 8max-active: 16min-idle: 8max-wait: 60000test-while-idle: truetest-on-borrow: falsetest-on-return: false#配置Redis数据源redis:database: 0host: 1.117.153.182port: 6379password:jedis:pool:max-active: 1000max-wait: -1msmax-idle: 16min-idle: 8#配置mongodb数据库data:mongodb:host: 1.117.153.182port: 27017database: emosauthentication-database: adminusername: adminpassword: ****
#配置Mybatis
mybatis:mapper-locations: classpath*:mapper/*.xmltype-aliases-package: com.ck.emos.app.pojoconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmap-underscore-to-camel-case: true
#配置日志输出
logging:level:root: infocom:ck:emos:app:mapper : warnpattern:console: "%d{HH:mm:ss} %-5level %msg%n"

2.整合工具包

1)自定义异常类:

自定义异常类继承的父类,我没有选择Exception。因为Exception类型的异常,我们必须要手动显式处理,要么上抛,要么捕获。我希望我定义的异常采用既可以采用显式处理,也可以隐式处理,所以我选择继承RuntimeException这个父类。RuntimeException类型的异常可以被虚拟机隐式处理,这样就省去了我们很多手动处理异常的麻烦。

package com.ck.emos.app.common;import lombok.Data;/*** <p>* 自定义异常工具类* </p>** @author wzh* @since 2022-03-26*/
@Data
public class EmosException extends RuntimeException{/*** 错误消息*/private String msg;/*** 状态码*/private Integer code=500;public EmosException(String msg){super(msg);this.msg=msg;}public EmosException(String msg,Throwable e){super(msg,e);this.msg=msg;}public EmosException(String msg,Integer code){super(msg);this.msg=msg;this.code=code;}public EmosException(String msg,Integer code,Throwable e){super(msg,e);this.msg=msg;this.code=code;}
}

2)定义标准返回对象

采用Apache 的 httpcomponents 库里面的 HttpStatus 类封装了很多状态码;

package com.ck.emos.app.common;import cn.hutool.http.HttpStatus;
import java.util.HashMap;
import java.util.Map;/*** <p>* 标准返回对象* </p>** @author wzh* @since 2022-03-26*/
public class Result extends HashMap<String,Object> {public Result(){put("code", HttpStatus.HTTP_OK);put("msg","成功");put("data","");}/*** 生成链式调用put方法* @param key* @param value* @return*/public Result put(String key,Object value){super.put(key,value);return this;}/*** 生成静态工程方法* @return*/public static Result success(){return new Result();}public static Result success(String msg,Object data){Result result = new Result();result.put("msg",msg);result.put("data",data);return result;}public static Result success(Object data){Result result = new Result();result.put("data",data);return result;}public static Result success(Map<String,Object> map){Result result = new Result();result.putAll(map);return result;}public static Result error(){Result result = new Result();result.put("code",HttpStatus.HTTP_INTERNAL_ERROR);result.put("msg","系统异常,请联系管理员!");return result;}public static Result error(String msg){Result result = new Result();result.put("code",HttpStatus.HTTP_INTERNAL_ERROR);result.put("msg",msg);return result;}public static Result error(Integer code,String msg){Result result = new Result();result.put("code",code);result.put("msg",msg);return result;}
}

3)集成Swagger:

package com.ck.emos.app.config;import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ApiKey;
import springfox.documentation.service.AuthorizationScope;
import springfox.documentation.service.SecurityReference;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.ApiSelectorBuilder;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;import java.util.ArrayList;
import java.util.List;/*** <p>* 集成Swagger* </p>** @author wzh* @since 2022-03-26*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket createRestApi(){Docket docket = new Docket(DocumentationType.SWAGGER_2);// 配置页面基本信息ApiInfoBuilder apiInfoBuilder = new ApiInfoBuilder();apiInfoBuilder.title("Emos在线办公系统");ApiInfo apiInfo = apiInfoBuilder.build();docket.apiInfo(apiInfo);// 添加类的方法ApiSelectorBuilder selectorBuilder=docket.select();// 先设定所有类的所有方法selectorBuilder.paths(PathSelectors.any());// 定义扫描的标识注解selectorBuilder.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class));docket=selectorBuilder.build();// 添加单点登录ApiKey apiKey = new ApiKey("token", "token", "header");List<ApiKey> apiKeyList = new ArrayList<>();apiKeyList.add(apiKey);docket.securitySchemes(apiKeyList);// 设定作用域--三层封装AuthorizationScope scope=new AuthorizationScope("global","accessEverything");AuthorizationScope[] scopes={scope};SecurityReference reference=new SecurityReference("token",scopes);List<SecurityReference> securityReferences = new ArrayList<>();securityReferences.add(reference);SecurityContext context=SecurityContext.builder().securityReferences(securityReferences).build();List<SecurityContext> securityContexts = new ArrayList<>();securityContexts.add(context);docket.securityContexts(securityContexts);return docket;}
}

4) 添加后端校验:

package com.ck.emos.app.param;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;import javax.validation.constraints.NotNull;@ApiModel(value = "前端请求封装参数")
@Data
public class TestSayHelloParam {@NotNull@ApiModelProperty(value = "名称")private String name;
}

[项目实战篇] Emos在线办公小程序--搭建项目相关推荐

  1. 视频教程-项目实战视频课程:美团小程序(Node.js+Express+支付)-微信开发

    项目实战视频课程:美团小程序(Node.js+Express+支付) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN ...

  2. 项目实战视频课程:美团小程序(Node.js+Express+支付)-李宁-专题视频课程

    项目实战视频课程:美团小程序(Node.js+Express+支付)-473人已学习 课程介绍         小程序视频教程,本课程实现了美团小程序的核心部分.采用异步的方式,通过AJAX从服务端获 ...

  3. vue项目实战-4.前端渲染.微信小程序

    设置整个页面结构 1.由于是手机端项目,所以需要加上手机端相关处理,修改index.html代码,增加meta处理 <meta name="viewport" content ...

  4. 微信小程序搭建项目起步

    1. 首先需要按照HBuilderX 作为开发工具   下载地址: https://www.dcloud.io/hbuilderx.html 2. 创建项目 文件-->新建--->1.项目 ...

  5. 一款开源的微信小程序商城项目,接外包直接拿去改改,就能用(附源码)。。。...

    大家好,今天,推荐一个小程序商城项目. 上次是谁要小程序商城项目啊,猿哥帮你找到了. 这是我目前见过的最好的小程序商城项目.功能完整,代码结构清晰.值得推荐. 后端部分虽然是PHP的,但是建议有研究精 ...

  6. 手把手带你学习微信小程序 —— 项目实战篇

    微信小程序项目实战篇 WeChat-applet 1.支付宝界面展示 2.微博发帖功能实现 3.时间格式化案例 4.微信红包界面展示 5.微信消息删除案例 6.微信icon 组件 6.1 支付成功界面 ...

  7. 微信小程序商城项目实战(完结篇:意见反馈)

    微信小程序商城项目完结 意见反馈 代码实现 首先修改标题并且使用之前写好的tab组件 编写界面 编写样式 逻辑处理js 效果图 意见反馈 做假的意见反馈,主要练习一下微信小程序文件上传api以及样式界 ...

  8. 【干货#008】30分钟实战知晓云内容发布小程序

    缘起 知晓云的特色之一就是内置可视化内容管理,简单易用的富文本编辑.管理功能,配合 SDK 内置的微信小程序富文本渲染引擎wxParser轻松完成内容发布小程序的制作. 下面一步一步实战一个如下图所示 ...

  9. 微信小程序控制硬件第17篇 : 腾讯连连小程序通过LLSync蓝牙协议控制安信可PB-02模组,无需网络实现蓝牙本地通讯。(附带源码)

    文章目录 前言 一.注册腾讯物联开发平台设备 新建项目 新建产品 创建数据模板 选择设备开发方式 交互开发配置 新建设备 二.设备端操作 硬件简介与连接 准备软件环境 工程目录 烧录步骤 三.腾讯连连 ...

  10. 在线签名、canvas手写在线签名——小程序端实现在线签名,手写电子签名canvas

    在线签名.canvas手写在线签名--小程序端实现在线签名,手写电子签名canvas 近期公司准备接一个政府的小项目,里头有一个在线签名的需求,老板让我研究一下.于是就...开始思考: 在线手写签名, ...

最新文章

  1. [转]NS2 Data Collections by mitkook
  2. b500k电位器引脚接法_可调电位器实物接线图及接线方法详解
  3. centeros7 mysql,center os 7 Mysql 安装
  4. Java私有方法解释_java接口中 定义 private 私有方法
  5. 就是想让你无法无动于衷:观瑞士的“行为艺术”
  6. Mr.J--JavaScript-恶搞小代码
  7. jenkins指定服务器地址,jenkins迁移新服务器(更换IP),webhook地址修改
  8. Spring beans配置方案(一) 学习笔记
  9. redis数据类型之hash入门
  10. 关于程序分析和代码编写
  11. 如何使用dosbox运行程序——步骤详解
  12. qdir 类似工具_实用工具——多窗口资源管理器qdir
  13. 从0开始学大数据(十四)
  14. octet和byte的差异
  15. windows升级新版本mysql
  16. vue 后台翻译_vue前端vue-i18n实现翻译功能
  17. c语言sleep作用,c语言sleep用法是什么?
  18. 在不同的浏览器下FORM及它的小伙伴们默认样式的CSS属性值是不完全一致
  19. msn空间中使用电子邮件发日志项和添加音乐播放模块
  20. LTE 5G UDN 小站的春天?

热门文章

  1. JavaScript系列之注释
  2. MC34063升压芯片——5V转12V、-12V仿真与实物制作
  3. Linux目录结构+Linux快捷键+Linux安装软件+Linux常用命令
  4. java分布式框架_5个强大的Java分布式缓存框架推荐
  5. windows cmd修改ip地址
  6. ffmpeg和JavaCV
  7. 字节码编程 | 使用Javassist生成JavaBean
  8. 【设计】同步降压型DC-DC转换器驱动电路设计
  9. 【数据分析能力是指什么?】
  10. 【分享】这款微信电子名片真的很值得拥有!