springboot 实战 - 一个简单的 springboot 项目

本贴最后更新于 2596 天前,其中的信息可能已经事过景迁

这两天学习 springboot,各种尝试,各种看文档,终于是跑起来几个 demo,在学习三天后,我在国庆这一天完整了写了一个测试的 demo,虽然是一个测试项目,但是五脏六腑也差不了几样了。如果后续有时间的话,还会再完善一下,把一般用到的组件都集成进去。

下面就对这个项目进行一下简单的介绍

说明

  • 首先,这是一个 springboot 的入门学习 demo,不是什么完整的项目;
  • 不过如果是拿来学习,还是有很多地方可以参考一下:
    • 日志的统一处理
      代码中利用 spring AOP 的思想对日志进行了统一的处理,例子中只处理了 http 请求时的各种日志,对于其他业务类的日志,参考依葫芦画瓢也不是什么难事
    • 异常统一处理
      代码中用 @ControllerAdvice 进行了异常的统一处理,这个在实际项目中也是用途非常的广,一般项目组中各组员能力参差不齐,所以对于异常、日志能够统一处理是非常好的,这里统一处理了异常,业务代码就真的 “一切皆可抛” 了,无所顾忌的抛异常就可以了。
    • jpa 持久化
      spring-data-jpa 是 spring 整合的 hibernate ,可以完全跟 hibernate 一样不用写 sql 语句,甚至连 xml 配置都不用写了
  • 这个我可能会继续维护加东西进去,也可能不会……看时间吧,最近还是有很多东西要做,连国庆都忙了一整天了。

构建

  • 由于我之前已经写了一篇简单的构建 springboot 项目的帖子,今天就不重复写了,有需要了解的可以移步这里:
    springboot 入门搭建

  • 而对于这个项目,我就不详细说明构建的经过了,相对来说还是比较痛苦的。

  • 源码直接去 oschina 获取就可以了

代码解析

项目结构

jap
│
├─src/main/java 
│  ├─io.sousou.aspect 切面,统一日志处理
│  ├─io.sousou.controller 控制器
│  ├─io.sousou.dao 数据访问对象(持久化)
│  ├─io.sousou.enums  枚举
│  ├─io.sousou.handle  处理器
│  ├─io.sousou.model 实体对象
│  ├─io.sousou.service  service 接口
│     └─impl 接口实现类
│  └─io.sousou.enums   枚举
│ 
├─src/main/resources 
│  ├─static  静态文件
│  ├─ * .yml 配置文件 
│ 
├─src/main/test  单元测试

其他的就不列出来了,大家应该都知道。可以参照下图:

统一日志处理

废话不多说了,直接上代码

统一异常处理

异常处理中,我自己封装了一个异常类 E,平时自己项目中的异常可以手动抛,
做出不同的处理,而对于意料之外的异常,则统一捕获处理,前台返回为未知的异常,具体异常信息记录日志。

服务端表单验证
其实对于表单验证,很多时候都是交给前端去处理的,但是有时候根据业务,也是需要在服务端进行验证的,
这面的类中只做了一个为空验证,就是在属性上加 @NotBlack  注解。然后再controller中进行判断就可以了。
具体请看代码,稍后我会加多点注释进去

另外,在这里我有一个index.html ,这个static目录下面的静态文件是直接可以访问的,
访问路径就是 http://localhost:8081/index.html

我这里只是用来测试的,本来想顺便作为api接口的测试,但是后来发现比较麻烦,
就用postman来测试api接口测试了

postman 谷歌插件安装

结束

原文在此!

  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 17 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • alanfans

    没有集成多数据源,没有 swagger-ui,没有权限,差评

    1 回复
  • someone9891

    权限后面有个版本加进去了,多数据源没有,swagger 也没有