项目结构
IBPS提供骨架项目给开发人员后续新添项目进行参考,骨架项目只是提供结构参考,实际业务项目请新建项目进行开发,骨架项目结构如下:
项目说明
骨架项目下有四个子root,分别对应服务的基础模型、业务、服务接口和服务接口实现,服务接口中包含api和client两个项目,分别对应内部和外部调用,实际项目如下:
ibps-skeleton-model-root
—-skeleton-model // 项目模型,tbl、po、vo、mapping以及常量文件
ibps-skeleton-biz-root
—-skeleton-biz // 业务项目,业务查询和数据操作,包括dao、repository、domain
ibps-skeleton-plugin-root
—-skeleton-plugin-script //业务脚本存放处,当没有ibps-excessive-platform项目使用
ibps-skeleton-provider-base-root
—-provider-skeleton-api // 接口项目,内部使用调用
—-provider-skeleton-client //接口项目,提供外部调用
ibps-skeleton-provider-root //都是包含启动类的接口实现,区别在于依赖的多少
—-provider-skeleton // 接口实现项目,包含项目的启动类,依赖最多
—-provider-skeleton-other // 接口实现项目,包含项目的启动类,扫描其他包路径的例子
—-provider-skeleton-spring-boot // 接口实现项目,包含项目的启动类,依赖较多
—-provider-skeleton-spring-boot-sample // 接口实现项目,包含项目的启动类,依赖最少
新建项目
在实际业务项目中,会有以下操作:
- 复制项目;
- 改项目名称,root项目和子项目都需要改;
- 修改依赖文件
复制项目
复制ibps-skeleton-root项目
修改项目名字
修改项目名称和子项目名称,建议将skeleton替换为具体的项目名,例如替换为cic,如下所示
修改依赖
- 修改ibps-cic-model-root下的pom文件,修改parent,由ibps-starter-parent统一维护版本号,基本保持一致格式如下,版本号请参考其他root的pom文件,保持一致:
<parent> <groupId>com.lc.ibps.cic</groupId> <artifactId>ibps-cic-root</artifactId> <version>3.1.4-SNAPSHOT</version> <relativePath>../../pom.xml</relativePath> </parent>
修改groupId;
修改artifactId(项目名称);
修改modules,将子项目名称修正;
修改ibps-cic-model-root/modules/cic-model/pom文件,将父项目即parent元素指向ibps-cic-model-root,版本号保持一致,项目信息也进行对应修改,如下:
<parent> <groupId>com.lc.ibps.cic</groupId> <artifactId>ibps-cic-model-root</artifactId> <version>3.1.4-SNAPSHOT</version> <relativePath>../../pom.xml</relativePath> </parent> <groupId>com.lc.ibps.cic</groupId> <modelVersion>4.0.0</modelVersion> <version>3.1.4-SNAPSHOT</version> <artifactId>ibps-cic-model</artifactId>
修改ibps-cic-biz-root/modules/cic-biz/pom文件,将 dependencies的应用进行修改,例如对cic-model进行了引用,那就需要将原来的skeleton-model进行修改,groupID请按实际填写,如下图2:
重复以上6点操作将ibps-cic-biz-root、ibps-cic-plugin-root、ibps-cic-provider-base-root、ibps-cic-provider-root修改完毕;
修改ibps-starter-parent下的pom文件,这个项目只用于维护版本号,搜索skeleton部分,复制一份进行修改,修改后例子如下:
<!-- cic start --> <dependency> <groupId>com.lc.ibps.cic</groupId> <artifactId>ibps-cic-model</artifactId> <version>${ibps-cloud.version}</version> </dependency> <dependency> <groupId>com.lc.ibps.cic</groupId> <artifactId>ibps-cic-biz</artifactId> <version>${ibps-cloud.version}</version> </dependency> <dependency> <groupId>com.lc.ibps.cic</groupId> <artifactId>ibps-provider-cic-api</artifactId> <version>${ibps-cloud.version}</version> </dependency> //其他同样操作 <!-- cic end -->
对项目进行maven -> update project,这样项目就构建完毕。
注意事项
如果想用表单和流程,那么ibps-provider-business就是最完整的骨架项目,复制business项目代替provider-skeleton项目。
示如下报错信息,可能是修改包名后,没有扫描到com.lc.ibps的包或者是您自己创建的包。在
conf/ibps-resources.xml
文件中配置好即可Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘masterDataApplication’: Unsatisfied dependency expressed through field ‘appConfig’; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type ‘com.lc.ibps.cloud.config.ApplicationConfig’ available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: @org.springframework.beans.factory.annotation.Autowired"">{@org.springframework.beans.factory.annotation.Autowired(required=true)}
新增的服务需要在zuul中配置路由地址,配置文件在zuul服务下的
config/application.yml
中,配置方式参考skeleton服务的配置#zuul服务下的config/application.yml zuul: ... prefix: /ibps routes: ibps-oauthserver-provider: serviceId: ibps-oauthserver-provider path: /oauth2/v3/** ibps-platform-provider: serviceId: ibps-platform-provider path: /platform/v3/** ibps-form-provider: serviceId: ibps-form-provider path: /form/v3/** ibps-bpmn-provider: serviceId: ibps-bpmn-provider path: /bpmn/v3/** ibps-business-provider: serviceId: ibps-business-provider path: /business/v3/** ibps-skeleton-provider: serviceId: ibps-skeleton-provider path: /skeleton/v3/**
#skeleton下的config/application.yml spring: application: name: ibps-skeleton-provider profiles: active: ${SPRING_PROFILES_ACTIVE:dev} include: common,app,provider-base swagger: title: 流辰IBPS3.0门户平台 description: 流辰IBPS3.0门户服务平台接口文档说明 string-extensions: - name: apiPrefix value: /ibps/skeleton/v3 ...