- api-gateway API网关
- basis-service : 记录日志,发送邮件等
- common : 被依赖的模块,非单独启动的服务
- base-server : 一般的微服务都需要依赖此模块
- basis :
- email : 发送邮件服务,建议需要发送邮件的都通过消息队列,由指定的服务统一发送邮件
- flyway : 数据库版本控制
- jpa : hibernate,使用了druid连接池
- mybatis
- mybatis-plus Mybatis 的增强工具,挺好用的
- redis
- redisson 利用redis实现分布式锁
- rocketmq : 阿里的消息队列
- shiro
- web
- server
- config-repo : 配置文件
- config-server : 配置服务,微服务从此服务中获取配置
- discovery : 服务治理(eureka-server)
- spring-boot-admin : 监控
- model-test : 用来练习和测试的模块
- eureka-client-provider : 模拟 服务提供方
- eureka-client-consumer : 模拟 服务消费者
- web-service : 没用上,测试的
- wxapp-microservice : 微信小程序服务端
- wxapp : 基础模块
- wxapp-service : 小程序微服务
本项目集成了lombok,让代码更简洁
- ide需自行安装lombok插件
- 常见使用场景:实体中使用@Data注解在类上,不需要getter、setter、toString方法了
- 项目使用了配置中心,路径为:server/config-repo文件夹
一般开发环境使用本地配置 , 生产或测试环境使用git/svn仓库,配置见application.yml(application-test.yml)
处于安全考虑,配置文件中密码等重要信息需要加密,配置中心的密钥也不建议直接放在配置文件中 本项目密钥留空,项目启动的时候以启动参数的形式将密钥赋值 生产环境可以使用脚本 开发环境可以在dashboard中指定参数
编码规范: 见阿里java开发手册
- idea中安装alibaba java coding guidelines 插件
- 文件注释(File Header)
/** * @author ${USER} * @date ${DATE} ${HOUR}:${MINUTE}:${SECOND} */hosts文件增加:
127.0.0.1 std-eureka-server-1因为注册比较慢,开发环境可以将所有serviceName都加到hosts中
Assert 项目中的断言使用org.springframework.util.Assert,原生的在生产环境会默认忽略
字符集 项目为utf-8,数据库为utf8mb4 因为Mysql的utf8编码最多3个字节,4个字节会报错(Emoji)
微服务通信 约定微服务之间通信,成功则返回需要的数据,异常则直接抛业务异常,框架会返回Result实体
- 项目异常继承关系,密码boot
- 项目默认业务异常为BusinessException,自定义业务异常需要继承此异常
- 通过control的请求,抛的异常都将在GlobalExceptionHandler中被处理,所以业务中尽量不要加try.catch
- 被调用的微服务抛的异常,框架调用方在MyResponseErrorHandler中根据相应策略进行处理
- rest请求返回400和500可能会抛AbstractRestServerException和AbstractRestHttpException异常,调用方可根据实际情况捕获
jpa 配置禁止自动修改表,因为使用了flyway来管理数据库版本
spring.jpa.hibernate.ddl-auto=none
application启动类中
- 增加EnableDiscoveryClient注解,声明这是一个Eureka Client
- @EnableDiscoveryClient 等同于bootstrap.yml中的spring.cloud.config.discoveryenabled: true
向Eureka服务器进行服务注册
#向Eureka服务器进行服务注册,这里可以声明多个Eureka服务器,用逗号隔开eureka: client: service-url: defaultZone: http://localhost:18001/eureka
ribbon 微服务默认使用ribbon负载均衡,在base-server模块pom中已经引入依赖,并在RestConfig中加入@LoadBalanced注解
config 在base-server模块pom中已经引入