SpringBoot+Dubbo+Mybatis 项目升级版本(Gradle)

Easter79
• 阅读 569

按最近公司的架构,自己搭建这样个样例。主要是将服务API层进行了区分,解耦接口与模型层.

其中pojo层与vo层都是用来传递参数用法,API-facade层与service是两个概念。API-facade层有统一的规范,可以返回统一结果:

Result {

int statecode;

int stateText;

T data;

public boolean isSuccess();

public boolean isBizFailure();

public boolean isFailure();

}

建议把vo与model及pojo层分开,用不同名称如 UserInfoVo,UserInfo,UserInfoPo

如果使用dubbo来构建。从分包层次来说。应该有:

  1. model
    1. 对应持久化对象。mybatis的对象或是hibernate对象
  2. dao 
    1. 对应数据库访问层。一般是mapper或是dao或是repository
  3. bus
    1. facade实现层
    2. service 层
    3. pojo层
  4. facade
    1. API service层 
    2. API vo层 (可以看成model型层复制)
  5. controller
    1. 提供web服务
  6. common
    1. 定义通用的util
    2. 定义通用的api -result

一般来说可以有这层次。还可以多一层。将facade再包装一层。叫整合api层。

如何使用:

  1. 创建数据库test,创建用户 。可修改application.properties
  2. 准备好zookeeper,默认地址:localhost:2181
  3. sample-app下有个deployer/dubbo-admin-2.5.4.war.在tomcat中部署
  4. 启动提供者:sample-app中com/tdu/app/run/Application.java
  5. 启动消费者:   sample-app2中fcom/run/Application.java
  6. 测试:http://localhost:9081/dubboapp2/test/call

如何下载:

https://github.com/tangdu/dubbo-api.git

如何初始化:

执行sample-master下的init_eclipse.sh 或是在项目下执行 gradle eclipse

-------关于-----------

关于面向SOA 我理解是:项目无状态、提供API。权限等再包装上层,所谓网关。

由这层可以做权限 、验证、加密、限流、统计。

对于完整项目来说,应该还要集成缓存 、job、UI、中间件、message

分享几个框架:redis、ehcache、quartz或Elastic-job、zookeeper、RocketMQ、bootstrap、sui3

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Simple Object Copy一款idea插件,优雅转化DTO、VO、BO、PO、DO
1、什么是DTO、VO、BO、PO、DO、POJOPOJO的定义是无规则简单的对象,在日常的代码分层中pojo会被分为VO、BO、PO、DTOVO(viewobject/valueobject)表示层对象1、前端展示的数据,在接口数据返回给前端的时候需要转成VO2、个人理解使用场景,接口层服务中,将DTO转成VO,返回给前台B0(bussines
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
3年前
SpringBoot+Dubbo+Mybatis 项目升级版本(Gradle)
按最近公司的架构,自己搭建这样个样例。主要是将服务API层进行了区分,解耦接口与模型层.其中pojo层与vo层都是用来传递参数用法,APIfacade层与service是两个概念。APIfacade层有统一的规范,可以返回统一结果:Result{intstatecode;intstateText;
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k