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.
nirvana
By S1ahs3r
nirvana
- 1,027