Nirvana系统设计

Spring Boot

based

今日分享

  • 系统分层
  • Spring Boot技术栈
  • 开发流程
  • 项目生命周期

系统分层

  • 分层演示
  • 基于docker的开发环境
  • 项目启动
  • 新业务接入

系统分层

  • app  web层与系统入口
  • core-service 核心服务
  • biz-* 独立业务
  • common-dal 数据层
  • integration 服务接入
  • facade 服务暴露
  • common-util 工具类

独立的开发环境

项目启动

  • 内置tomcat/jetty,易于启动
  • 易于docker部署
  • 模块化的配置
  • 运行时监控

 

banner

新业务-内部

置于biz-*

新业务-接入

置于integration

中间件-接入

  • Spring Boot Starter
  • 不满足要求可以同spring

Spring Boot技术栈

  • 零xml配置
  • 接入新技术栈迅速
  • 开发/测试工具齐备
  • 生命周期明显
  • 监控方便
  • 部署简易

Multi Module

  • 新module怎么建
  • 依赖的处理
  • module间依赖链
  • mvn 的生命周期

模块化配置

  • 去xml化
  • java Config+annotation

starter?

  • 自带客制化配置
  • 自动注入上下文
  • 可随时取消自动配置
  • 都有哪些starter?

熟悉的味道?

  • it just works.
  • 自带viewResolver
  • msgConverter
  • 编码配置
  • 资源映射
  • etc.

log怎么记

  • 多profile
  • 多文件
  • 按日期滚动
  • 变量定义
  • 读取文件配置
  • 输出到日志系统(ELK)
  • 有侵入么?

多profile?

that is it.

 

how to:

ternimal启动带jvm参数

 

健康检查

指标度量

统计调用次数&调用时间

actuator
beans
dump
health
info
metrics  
mappings

*shutdown

需要可视化?

服务化文档生成

  • 配置简单
  • 耦合在代码中,写起来不无聊
  • 可以供其他平台直接测试
  • /swagger-ui.html

打包/部署

  • fat jar
  • war
  • 注册成linux服务
  • 置入docekr仅需jdk

代码生成

  • 简易
  • 通用mapper
  • 通用service

PageHelper

分页工具

http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/HowToUse.markdown

 

http://git.oschina.net/free/Mybatis_PageHelper/blob/master/wikis/UseOrderBy.md

Mapper3

通用Mapper

http://git.oschina.net/free/Mapper/blob/master/wiki/mapper3/5.Mappers.md

 

单元测试

  • 基本逻辑
  • 分支覆盖
  • 常要mock

接口/集成测试

  • 启动系统
  • 服务功能

模块化单元测试

mvc/接口测试

覆盖率生成

Cobertura

服务化?

  • Spring Cloud
  • Docker+Consul
  • zk+dubbox

迁入成本

  • 新的log依赖,slf4j标准
  • service/controller业务代码
  • shiro相关代码
  • mybatis插件代码
  • 补充现有的异常记录
  • 补充现有的单元测试
  • 补充现有的集成测试

后续会有什么

  • 科学的工具类
  • 访问log与统计
  • 业务流程拓扑图
  • 后续业务的迅速接入,比如activiti
  • 持续集成
  • 成型的发布部署流程
  • 日志/数据平台
  • 更多的时间回家陪陪老婆孩子

FAQ

the end.