# 数据分析-详情页通用服务 (开发前必读) springboot3+redis+mybatis的一个标的详情页通用服务,~~DDD架构没使用到位,复杂性太高了~~ **所有来到这里的标的都是有效的!!!** ### 项目背景与目标 > 本项目是一个使标的(基金、机构、经理、指数、组合)详情页最大化通用的项目,尽最大可能做到详情页所有组件接口不依赖 > 非core库数据,如果存在依赖的其他外部数据源考虑是否业务相关。 > > 目标实现实现可插拔、可扩展、易维护插件式组件,大家一起努力。 ### 架构 以及 关注点 - jdk17, graalvm 加快启动 - springboot3.x 高版本的springboot框架,体验最新的功能 - jakarta api迁移,springboot3.0以上的版本要求所有的Java EE api都要迁移到Jakarta。比如javax.servlet.Filter需要替换为jakarta.servlet.Filter - spring.factories 文件废弃,自动配置包位置有变化 ### 项目分包说明 |-- application -- 应用层 | |-- dto -- 应用层dto对象,包括接口请求参数和返回结构,区分模块 | | |-- info -- | | |-- performance | |-- envent -- 应用层事件 | |-- service -- 应用层service,只做聚合无复杂业务 | |-- info | |-- performance | |-- position | |-- style |-- client -- api接口层 |-- domain -- 领域层 | |-- dao -- dao,封装了mapper取数 | |-- dataobject -- do对象,数据库持久化对象 | |-- dto -- 领域层dto区分模块 | | |-- performance | | |-- position | | | |-- bond | | | |-- future | | | |-- stock | | | |-- synthesize | | |-- style | | |-- py | |-- event -- 领域层事件 | |-- gateway -- 防腐层,提供结构给infrastructure层实现,依赖倒置 | |-- manager -- 领域层业务聚合,分模块 | | |-- performance | | | |-- handler | | |-- position | | |-- bond | | |-- future | | |-- stock | | |-- synthesize | |-- service -- 领域层service,直接操作dao或mapper的数据库服务 | |-- impl |-- infrastructure -- 基础设施层 |-- components -- 一些公共组件、aop或拦截器或过滤器等实现 |-- config -- 服务配置文件,抽离出服务外挂配置 |-- consts -- 系统常量 |-- exception -- 异常 |-- gatewayimpl -- 防腐层实现 |-- persistence -- 数据库持久化层mapper |-- task -- 系统任务 |-- utils -- 系统工具 项目是一个DDD架构的简单落地,请遵循或尽量遵循如下规约,如有不足大家讨论补充 - 1、目前项目分层主要为domain(领域层)、infrastructure(基础设施层)、application(应用层)、client(接口层,对外提供服务) - 2、分层说明:domain-所有都要用的共享对象;infrastructure-所有技术代码,mybatis、redis、mq、job、cache代码都要在这里实现(尽量做到domain通过依赖导致不依赖这些技术代码);application-应用层主要工作是一些领域服务、第三方服务的聚合,或者事件业务;client-对外提供接口服务,可以是门面、rest、rpc - 3、与calc计算服务的调用关系 参考 `BaseIndicatorServiceV2Impl` 食用,主要是调用calc提供的单例实例调用对应的方法获取结果 - 4、私有库下载配置,setting.xml文件配置如下内容,id与pom.xml文件配置的仓库id一致,用户名和密码是申请的账户信息 ```xml smppw-release xxx xxx smppw-snapshots xxx xxx ``` ##### 问题 1、需要预刷新的数据(交易日、无风险利率)如何处理? 在本服务提供job刷新到缓存