后端完整SpringBoot样例项目,无需其他依赖

背景

此篇给公司研发部新入职的后端java开发程序猿使用,帮助新人快速上手,避免口口相传和从代码中找规范。当然老员工也可以看看,加深对项目结构的理解,如有不对,欢迎指出。

先看框架代码,git地址在此

样例项目基于SpringBoot和SpringCloud框架,SpringBoot采用的是1.5.12.RELEASE版本,SpringCloud版本是Edgware.SR3,Java版本1.8。

微服务架构图

下图是一个SpringCloud微服务环境。这其中有网关、注册中心、配置中心和各业务项目。业务项目在启动时从配置中心获取配置,并将自己注册到注册中心中,业务项目之间通过Feign来进行接口调用。

一个已登录的用户从前端发来的HTTP请求会携带jwt,jwt在网关解密成userId和role并放入HTTP请求的header,然后转发给各业务项目。业务项目无需操作jwt,只需专注业务处理。

代码结构

先来看看代码包结构,如下图

  

java代码:

  • api:供微服务环境下其他微服务调用的接口
  • bean:java bean对象,一般会与数据库中的某张表对应
  • common:一些公共处理的类,包括自定义异常,异常处理,接口返回对象,Aop日志打印等
  • config:一些配置类,包括Redis配置、MQ配置、数据库配置、线程池配置等
  • controller:SpringMvc中的控制器,处理前端过来的请求
  • dao:数据访问层,包里是MyBatis的interface
  • mapper:供Mybatis用的SQL语句
  • remote:微服务接口访问层,包里是Feign的interface
  • service:定义服务接口类
  • service.impl:服务实现类,实现主要的业务逻辑
  • util:一些工具类

配置文件:

SpringBoot的配置文件有两种,application.properties和bootstrap.properties,bootstrap访问优先级高于application。项目中主要的配置从SpringCloud的配置中心获取,配置中心的url、端口、获取配置中心哪些配置文件必须配置在bootstrap.properties中。以下是配置文件说明:

  • templates:代码自动生成器的模板文件
  • application.properties:定义了项目独有的一些配置
  • bootstrap.properties:就一个配置,spring.profiles.active,指定使用哪个配置文件来运行当前项目
  • bootstrap-xxx.properties:xxx指对应的环境,文件定义了从对应环境配置中心的地址获取配置。可以通过http://domain:8761/baseConfig/dev来查看配置文件的内容。其中domain是配置中心对应的ip地址,baseConfig是配置文件名,dev是运行环境。
  • logback-spring.xml:日志打印配置文件,运行配置和springProfile相对应
  • mybatis-config.xml:mybatis一些基础配置,运行时会加载

说明

过滤器。AuthFilter,它的功能就是将header中的userId和role塞入HttpServletRequest,这样在controller中就可以直接在方法上定义userId和role,如下是示例。这其中userId和role是在网关gateway中解密jwt而来的,然后塞入请求的header。

RequestMapping("/sysUser")
public MyResEntity sysUser(Integer userId){
    SysUser sysUser = sysUserService.sysUser(userId);
    return new MyResEntity(sysUser);
}

MyBatis配置和使用。MyBatis的配置在config包里的MyBatisConfig.java中,其中加入了一些Druid数据源的配置。MyBatis使用样例可查看TestService和TestMapper两个类。

Redis配置和使用。Redis的配置类在config包里的CacheConfig.java中,其中要注意的是需要在expiresMap中加入需要使用的key的超时时间。Redis的使用样例可查看RedisDemoService这个类。

MQ配置和使用。MQ的配置类在config包里的MqConfig.java中。MQ的使用样例可查看MqDemoService这个类。目前我们使用的MQ只有一个topic,通过tag来区分不同的业务。

OSS配置和使用。OSS的配置和一些基础方法在util包的OssClient.java中。其中OSS的使用分为前端上传和后端上传两种,两种上传的样例代码可查看OssController。

日志。日志配置在logback-spring.xml中,通过springProfile来对应SpringBoot的运行环境。目前在RestControllerAop中已info级别打印了每个请求的参数、返回结果、响应时间等,在MyExceptionHandler中以error级别打印了异常日志。

异常处理。若是已知的自定义异常,抛BaqiException。BaqiException有两个参数,code和message,对应返回码和错误信息。所有的Exception都在MyExceptionHandler类中处理,不同的Exception对应着MyExceptionHandler中不同的方法,会有不同的处理。

接口暴露及访问。使用的是SpringCloud的Feign组件。需在启动类上增加@EnableDiscoveryClient和@EnableFeignClients两个注解。微服务中暴露的接口在api包中,调用其他微服务接口的实现在remote包中。

代码自动生成。生成器为MyBatisPlusGenerator.java,这是个main方法,可直接执行,需要填入数据源配置和包路径。执行完成后生成了bean、dao、service、controller层的代码,包含了基础的增删改查和查列表方法。

单元测试。单元测试类在test包中,使用的是JUnit,基础方法在BaseJunitTest中,样例代码可查看PatientControllerTest类。

Idea一些配置

设置vm options和Environment variables。项目启动多了后,特别占内存,可以在Run/Debug Configurations中设置启动参数。另外,可在配置中指定启动的配置文件,如下图所示:

 

 

## 平台简介 可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 诺寒基于hplus和inspinia两套后台系统模板开发。 http://www.zi-han.net/theme/hplus http://webapplayers.com/inspinia_admin-v2.7.1 ## 内置功能 1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现。 3. 岗位管理:配置系统用户所属担任职务。 4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 7. 参数管理:对系统动态配置常用参数。 8. 通知公告:系统通知公告信息发布维护。 9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 10. 登录日志:系统登录日志记录查询包含登录异常。 11. 在线用户:当前系统中活跃用户状态监控。 12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 14. 系统接口:根据业务代码自动生成相关的api接口文档。 15. 在线构建器:拖动表单元素生成相应的HTML代码。 16. 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值