加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

后端开拓实践系列——Spring Boot项目模板

发布时间:2019-07-27 00:34:53 所属栏目:建站 来源:无知者云
导读:在我的事变中,我从零开始搭建了不少软件项目,个中包括了基本代码框架和一连集成基本办法等,这些内容在火速开拓中凡是被称为第0个迭代要做的工作。可是,当项目运行了一段时刻之后再来反观,我总会发明一些不敷的处所,要么测试分类没有分好,要么根基的

对付gradle而言,我们决心地将Gradle插件剧本与插件设置放到了一路,好比Checkstyle:

  1. ├── gradle 
  2. │   ├── checkstyle 
  3. │   │   ├── checkstyle.gradle 
  4. │   │   └── checkstyle.xml 

究竟上,在默认环境下Checkstyle插件会从项目根目次下的config目次查找checkstyle.xml设置文件,可是这一方面增进了多余的文件夹,另一方面与该插件相干的办法分手在了差异的处所,违反了广义上的内聚原则。

基于营业分包

从前的Java分包方法凡是是基于技能的,好比与domain包平级的有controller包、service包和infrastructure包等。这种方法当前并不被行业所推许,而是应该起首基于营业分包。好比,在订单示例项目中,有两个重要的规模工具Order和Product(在DDD中称为聚合根),全部的营业都环绕它们睁开,因此别离建设order包和product包,再别离在包下建设与之相干的各个子包。此时的order包如下:

  1. ├── order 
  2. │   ├── OrderApplicationService.java 
  3. │   ├── OrderController.java 
  4. │   ├── OrderNotFoundException.java 
  5. │   ├── OrderRepository.java 
  6. │   ├── OrderService.java 
  7. │   └── model 
  8. │       ├── Order.java 
  9. │       ├── OrderFactory.java 
  10. │       ├── OrderId.java 
  11. │       ├── OrderItem.java 
  12. │       └── OrderStatus.java 

可以看到,在order包下我们直接安排了OrderController和OrderRepository等类,而没有须要再为这些类分别单独的子包。而对付规模模子Order来讲,因为包括了多个工具,因此基于内聚性原则将它们归到model包中。可是这并不是一个必需,假如营业足够简朴,我们乃至可以将全部类直接放到营业包下,product包即是云云:

  1. └── product 
  2.     ├── Product.java 
  3.     ├── ProductApplicationService.java 
  4.     ├── ProductController.java 
  5.     ├── ProductId.java 
  6.     └── ProductRepository.java 

在编码实践中,我们老是基于一个营业用例来实当代码,在技能分包场景下,我们必要在分手的各包中往返切换,增进了代码导航的本钱;其它,代码提交的改观内容也是散落的,在查察代码提交汗青时,无法直观的看出该次提交是关于什么营业成果的。在营业分包下,我们只必要在单个同一的包下修改代码,镌汰了代码导航本钱;其它一个甜头是,假如哪天我们必要将某个营业迁徙到其它的项目(好比辨认出了独立的微处事),那么直接整体移动营业包即可。

虽然,基于营业分包并不料味着全部的代码都必需囿于营业包下,这里的逻辑是:颖呷举办营业分包,然后对付一些不附属于任何营业的代码可以单独分包,好比一些util类、民众设置等。好比我们依然可以建设一个common包,下面安排了Spring民众设置、非常处理赏罚框架和日记等子包:

  1. └── common 
  2.     ├── configuration 
  3.     ├── exception 
  4.     ├── loggin 
  5.     └── utils 

自动化测试分类

在当前的微处事和前后端疏散的开拓模式下,后端项目仅提供纯粹的营业API,而不包括UI逻辑,因从此端项目不会再包括诸如WebDriver的重量级端到端测试。同时,后端项目作为向外提供营业成果的独立运行单位,在API级别也应该有响应的测试。

另外,措施中有些框架性代码,要么是诸如Controller之类的技能性框架代码,要么是基于某种架构气魄威风凛凛的代码(好比DDD实践中的ApplicationService),这些代码一方面并不包括营业逻辑,一方面是很薄的一个抽象层(即实现相对简朴),用单位测试来包围显得没有须要,因此笔者的概念是可以不为此编写单独的单位测试。再者,措施中有些重要的组件性代码,好比会见数据库的Repository可能漫衍式锁,行使单位测试现实上“测不到点上”,而行使API测试又显得在分类逻辑上不公道,为此我们可以专门建设一种测试范例谓之组件测试。

基于以上,我们可以对自动化测试做个分类:

  • 单位测试:焦点的规模模子,包罗规模工具(好比Order类),Factory类,规模处事类等;
  • 组件测试:不得当写单位测试可是又必需测试的类,好比Repository类,在有些项目中,这种范例测试也被称为集成测试;
  • API测试:模仿客户端测试各个API接口,必要启动措施。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读