作者:钟剑华  历史版本:1  最后编辑:龚清  更新时间:2024-09-20 15:13

项目结构

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 // 接口实现项目,包含项目的启动类,依赖最少

新建项目

在实际业务项目中,会有以下操作:

  1. 复制项目;
  2. 改项目名称,root项目和子项目都需要改;
  3. 修改依赖文件

复制项目

复制ibps-skeleton-root项目

修改项目名字

修改项目名称和子项目名称,建议将skeleton替换为具体的项目名,例如替换为cic,如下所示

修改依赖

  1. 修改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>
  1. 修改groupId;

  2. 修改artifactId(项目名称);

  3. 修改modules,将子项目名称修正;

  4. 修改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>
  5. 修改ibps-cic-biz-root/modules/cic-biz/pom文件,将 dependencies的应用进行修改,例如对cic-model进行了引用,那就需要将原来的skeleton-model进行修改,groupID请按实际填写,如下图2:

  1. 重复以上6点操作将ibps-cic-biz-root、ibps-cic-plugin-root、ibps-cic-provider-base-root、ibps-cic-provider-root修改完毕;

  2. 修改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 -->
  3. 对项目进行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
      ...