美文网首页spring架构开发技巧
xPlatform 一个基于Springboot2.X+Dubb

xPlatform 一个基于Springboot2.X+Dubb

作者: javacoo | 来源:发表于2020-05-27 23:49 被阅读0次

    xPlatform

    一个基于Springboot2.X+Dubbo2.6.x的后台快速开发框架

    介绍

    说明

    与Platform_admin搭配(前后端分离),支持分布式部署

    架构说明

    整体逻辑架构

    总体设计思想:

    1. xPlatfrom是基于SpringBoot+Dubbo+VUE构建的一个前后端分离的快速开发平台,旨在为项目组提供一套快速,高效,稳定,规范的开发框架,以适应当前快速迭代的开发任务。
    2. xPlatfrom提供前后端开发框架,前端主要基于VUE,利用VUE动态路由,动态加载系统定义的功能模块,将各个子系统集成,形成一个统一的运营管理平台。后端主要采用SpringBoot+Dubbo开发模式,各子系统依赖框架提供的基础包只需要实现具体业务功能即可,相关基础服务,如持久化,缓存,安全,日志,文件上传下载等都由框架提供。
    3. xPlatfrom是前后端分离支持分布式部署的,前端部署在静态服务器即可,如Nginx。后端分服务消费者和服务提供者,服务消费者即服务控制层是前端请求的入口,可部署多个,通过Nginx做负载均衡。服务提供者实现具体业务逻辑,是业务处理的核心,为服务消费者提供具体服务,可部署多个,由Dubbo提供服务治理功能。
    4. 基于以上实现便可构建一个前后端分离,分布式部署,动态扩展的应用系统。

    项目结构

    platform_genenator 生成器
    └── src
        ├── main  
        │   ├── java  
        │   │   └── com.platform.genenator
        └── └── └────── PlatformGenerator  生成器
    platform_common  公共组件
    └── src
        ├── main  
        │   ├── java  
        │   │   └── com.platform.common 
        │   │   ├────── cache  缓存配置
        │   │   ├────── constant  常量定义
        │   │   ├────── dto  公共数据传输对象
        │   │   ├────── enums  枚举类
        │   │   ├────── exception  异常信息
        │   └── └────── utils  工具类
        └── test  测试
     platform_common_api    服务接口公共组件
     └── src
        ├── main  
        │   ├── java  
        │   │   └── com.platform.common.api 
        │   │   ├────── dao  dao基类
        │   │   ├────── entity  entity基类
        │   │   ├────── service service基类
        │   └── └────── vo  公共值对象
        └── test  测试
     platform_common_consumer  服务消费者公共组件
     └── src
        ├── main  
        │   ├── java  
        │   │   └── com.platform.common.consumer 
        │   │   ├────── annotation  自定义annotation
        │   │   ├────── aspect  切面
        │   │   ├────── config  公共配置
        │   │   ├────── controller  控制器基类
        │   │   ├────── exception  consumer相关异常
        │   │   ├────── filter  过滤器
        │   │   ├────── interceptor  拦截器
        │   └── └────── jwt  jwt
        └── test  测试
     platform_common_provider   服务提供者公共组件
     └── src
        ├── main  
        │   ├── java  
        │   │   └── com.platform.common.provider
        │   └── └────── config  druid,mybatisplus相关配置
        └── test  测试
     platform_system_api  系统服务接口
     └── src
        ├── main  
        │   ├── java  
        │   │   └── com.platform.system.api
        │   │   ├────── entity  实体类
        │   │   ├────── enums  枚举类
        │   │   ├────── service  服务接口
        │   │   ├────── util  工具类型
        │   └── └────── vo 值对象
        └── test  测试
     platform_system_consumer  系统服务消费者
     └── src
        ├── main  
        │   ├── java  
        │   │   └── com.platform.system.consumer 
        │   │   ├────── config  缓存配置
        │   │   ├────── controller  枚举类
        │   │   ├────── shiro  枚举类
        │   │   └────── task  异常信息
        │   └── resource  
        │       ├── config 
        │       │     ├── csrfWhite.txt csrf白名单
        │       │     └── xssWhite.txt xss白名单
        │       ├── application-dev.properties 开发环境配置
        │       ├── application.properties 配置
        │       ├── fdfs.properties fdfs配置
        │       ├── logback-spring.xml logback配置
        │       └── ValidationMessages.properties 校验规则
        └── test  测试
     platform_system_provider   系统服务提供者
     └── src
        ├── main  
        │   ├── java  
        │   │   └── com.platform.system.provider
        │   │   ├────── dao  dao接口
        │   │   └────── service  接口服务实现类
        │   └── resource  
        │       ├── mapper mapper配置
        │       ├── application-dev.properties 开发环境配置
        │       ├── application.properties 配置
        │       └── logback-spring.xml logback配置
        └── test  测试
    

    相关技术:

    • spring boot 2.0.6.RELEASE
    • dubbo 2.6.3
    • mybatis 3.4.4
    • mybatis-plus 2.1.0
    • druid 1.1.1
    • shiro 1.4.0
    • jjwt 0.9.0
    • hibernate validator 6.0.13
    • Redis 4.0.11
    • zookeeper 3.4.12

    接口设计:

    RESTful
    

    认证与授权:

    shiro jwt
    

    项目搭建

    运行环境:

    jdk1.8+maven+redis+zookeeper。

    编码约定

    文件名称约定

    在页面文件夹中,按照功能模块分别建立不同的文件夹存放页面,

    如用户的页面就放在user文件夹中,而角色的就放在role文件夹中。

    1. 页面如果是列表类型的。页面的文件名用UserList.vue命名。

    controller、service、dao方法名称约定

    1. 如果是增加数据操作用insert做前缀。
    2. 如果是删除操作用delete做前缀
    3. 如果是修改操作用update做前缀
    4. 如果是查询操作用select做前缀

    新建一个功能模块

    第一步:数据库定义

    生成基础代码

    第二步:接口定义
    1. pom依赖:需要依赖接口公共模块

      <dependency>
         <groupId>com.platform</groupId>
         <artifactId>platform_common_api</artifactId>
         <version>${project.version}</version>
      </dependency>
      
    2. entity定义:使用mybatisplus注解,并继承DataEntity<实体类>>,如:

      @TableName("sys_company")
      public class SysCompany extends DataEntity<SysCompany>
      
    3. service定义:继承IBaseService<实体类>>,如:

      public interface ISysCompanyService extends IBaseService<SysCompany>
      
    第三步:服务提供者定义
    1. pom依赖:需要依赖服务提供者公共模块,业务接口模块

              <dependency>
                  <groupId>com.platform</groupId>
               <artifactId>platform_system_api</artifactId>
                  <version>${project.version}</version>
              </dependency>
           <dependency>
               <groupId>com.platform</groupId>
               <artifactId>platform_common_provider</artifactId>
                  <version>${project.version}</version>
           </dependency> 
      
    2. dao定义:继承CrudDao<实体类>,如:

      public interface SysCompanyDao extends CrudDao<SysCompany>
      
    3. service接口实现定义:继承BaseServiceImpl<dao定义, 实体类>,实现服务接口,如:

      @Component
      @Transactional(readOnly = true,rollbackFor = Exception.class)
      @Service(interfaceClass = ISysCompanyService.class)
      public class SysCompanyService extends BaseServiceImpl<SysCompanyDao, SysCompany> implements ISysCompanyService 
      
    第四步:服务消费者定义
    1. pom依赖:需要依赖服务消费者公共模块,业务接口模块

             <dependency>
               <groupId>com.platform</groupId>
               <artifactId>platform_system_api</artifactId>
                  <version>${project.version}</version>
           </dependency> 
           <dependency>
               <groupId>com.platform</groupId>
               <artifactId>platform_common_consumer</artifactId>
                  <version>${project.version}</version>
           </dependency> 
      
    2. controller定义:继承BaseController,如:

      @Controller
      @RequestMapping(value = "/sys/user")
      public class SysUserController extends BaseController{
       @Reference
       private ISysUserService sysUserService;
       ....
      }
      
    第五步:定义列表页面
    1. 需要在前端工程components目录下新建功能文件夹,并新建功能文件,如:system/user/UserList.vue
    第六步:授权
    • 系统基于VUE动态路由,动态加载系统定义的功能模块,在系统管理界面,进行配置,具体步骤如下:
    1. 系统菜单管理->新建系统菜单->输入相关数据

      注意:

      组件路径一栏,以前端系统components 为根目录填写功能模块全路径及文件名(不带后缀)如,/system/user/UserList ,

      组件名称一栏,以前端系统components 为根目录填写功能模块全路径及文件名(不带后缀),无第一个/如:system/user/UserList

    2. 系统角色管理->新建角色->输入相关数据->勾选菜单。

    开发注意事项

    1、搜索

    目前的搜索条件有
        /**
         * 等于
         */
        public static final String SEARCH_EQ="search_eq_";
    
        /**
         * 左模糊
         */
        public static final String SEARCH_LLIKE="search_llike_";
    
        /**
         * 右模糊
         */
        public static final String SEARCH_RLIKE="search_rlike_";
    
        /***
         * 全模糊
         */
        public static final String SEARCH_LIKE="search_like_";
        
    前端配合:
        <input type="text" class="form-filter input-sm_search" name="search_eq_login_name">
     只要在  input中 的 name 加入 search_eq_ 前缀 再加数据库中的字段名称即可
    

    2、properties加解密

    #SecurityUtil解密,以DES@+密文
    spring.datasource.password=DES@faijBM35E5y=
    com.platform.common.util.SecurityUtil中加解密
    public static void main(String[] args) throws Exception {
            System.out.println(encryptDes("root",ENCRYPT_KEY));
            System.out.println(decryptDes("faijBM35E5y=",ENCRYPT_KEY));
    }
    

    项目运行

    --windows jar启动顺序-------------------------------------------------------------------------
    #. D:\platform\zookeepe\bin\zkServer.cmd
    
    1. java -jar D:\platform\platform_system_provider\target\platform_system_provider.jar
    2. java -jar D:\platform\platform_system_consumer\target\platform_system_consumer.jar
    
    --Linux启动顺序-------------------------------------------------------------------------------
    #. /usr/local/zookeeper-3.4.12/bin/zkServer.sh start
    
    1. /opt/fans/consumer_start.sh start
    2. /opt/fans/system_provider_start.sh start(可启动多个)
    
    注意:消费者找不到提供者之服务器端采用内网IP
    hosts文件 vi /etc/hosts,将本机的名称#hostName#映射到服务器的公网IP
    重启注册中心(zookeeper),重启服务提供者
    
    

    系统截图

    图片.png
    图片.png
    图片.png
    图片.png
    图片.png
    图片.png
    项目信息
    路漫漫其修远兮,吾将上下而求索
    码云:https://gitee.com/javacoo/xPlatform
    QQ群:164863067
    作者/微信:javacoo
    邮箱:xihuady@126.com
    
    下载地址

    https://gitee.com/javacoo/xPlatform

    更新日志

    相关文章

      网友评论

        本文标题:xPlatform 一个基于Springboot2.X+Dubb

        本文链接:https://www.haomeiwen.com/subject/nupnahtx.html