# 架构说明 ## 依赖 * Gradle * SpringBoot * Mybatis * Shiro * Druid ## 模块划分 * Root: 根项目用户管理依赖关系,包括:SpringBoot,以及资源打包,各模块之间的依赖设置 * tools: 工具类库,提供无业务逻辑的工具,包括:mybatis-example,shiro-redis,以及各类第三方服务 * data: 数据管理类库,主要提供mybatis,mybatis-generator,flyway的配置管理 * xxx-api: api提供应用,提供SpringBoot的Application的启动支持 ## 配置管理 * xx-api需设定可支持的配置文件 ``` spring: profiles: active: runtime, tools, data ``` * runtime: 可根据运行环境加载对应的配置文件,通过profile中进行不同环境的配置管理 * tools,data: 对应自模块的配置信息 * 支持各个模块建立独立的配置文件 ## 缓存 * 通过Redis+Ehcache实现不同需求的缓存 ``` @Cacheable(cacheNames="redis-SSAccountInfo", key="'SSAccountInfo_' + #root.args[0].accountId", unless="#result==null") @Cacheable(cacheNames="SSAccountInfo", key="'SSAccountInfo_' + #root.args[0].accountId", unless="#result==null") ``` * 通过前缀进行划分 ## 数据库管理 * 通过Flyway进行版本管理 * 配置在data模块中 * 版本sql存放在resources/db/migration中 * 通过Mybatis-generator生成所需的Dao、Mapping、Entity、Example * tools模块中包含通用Example * 建议通过Service提供数据支持(tools中提供Service类库用于继承),避免在generator的文件中变更 ## Api支持 * 通过Swagger生成所有api文档用于对接 * 使用注解的方式在controller中说明接口信息 * shiro打开对于接口文档的访问权限 ``` ```